libhv icon indicating copy to clipboard operation
libhv copied to clipboard

修复 main_ctx_init 在特殊情况下误判 oldpid 运行

Open House-Men opened this issue 8 months ago • 0 comments

在某些特殊条件下存在 上一次进程意外结束导致没有删除pid文件,并且系统重启下次使用时历史残留的pid文件恰好是其他运行中的进程从而导致误判运行中。 Windows我采用的利用被打开占用中的文件无法remove成功特性规避了此类现象。 Unix我采用的利用文件写锁进程互斥特性规避了此类现象。 同时修复了Windows单纯OpenProcess判断进程结束存在误判现象,变更为GetExitCodeProcess + STILL_ACTIVE解决。

另外支持了下 main_ctx_init 自定义设置 run_dir 因为不是所有程序制作的安装包默认所在运行路径都具备写入权限,Windows通常是SHGetKnownFolderPath获取用户AppData目录,Linux则是getpwuid_r获取的用户家目录,所以支持调用main_ctx_init前自定义设置run_dir很重要。

House-Men avatar Apr 15 '25 23:04 House-Men