如果产生儿童进程,单个实例程序的文件锁会失败

问题描述 投票:0回答:1

问题是,如果我做任何使用

int system(const char *command);
产生孩子流程的事情,并且在某个时候,有人使用“杀死”来结束该程序,则儿童进程将保持活力,并且锁不会被删除,从而阻止我的应用再次运行。
是否有解决问题的解决方案?

您需要

O_CLOEXEC

作为旗帜。然后,将手柄在子过程中打开。

c++ c linux child-process flock
1个回答
3
投票
最终调用

system()

,这是加载新的过程二进制文件的方式。
    
linux您可以检查

exec()

中的条目,以查看是否已经在运行另一个实例:

/proc
    

© www.soinside.com 2019 - 2025. All rights reserved.