Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

House-Men
Copy link
Contributor

@House-Men House-Men commented Apr 15, 2025

在某些特殊条件下存在 上一次进程意外结束导致没有删除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很重要。

support main_ctx_init custom set run_dir
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant