Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查程序的另一个实例是否已在运行_C++_Unix_Freebsd - Fatal编程技术网

C++ 检查程序的另一个实例是否已在运行

C++ 检查程序的另一个实例是否已在运行,c++,unix,freebsd,C++,Unix,Freebsd,如何检查另一个程序实例是否已经在UNIX系统下运行?和exit()如果是 进程启动时,我已经在使用带有pid的file。然后我检查pid是否存在。但有时程序会以意外的行为运行,我有大量的程序副本在运行。使用适当的同步机制(例如a),以防止程序启动两次。如果您正在向文件写入PID,则应使用flock序列化对文件的访问。很难判断实际发生了什么问题,如果您希望不公开您的代码,@πάνταῥεῖ 在新pid写入文件之前,以及在另一个实例读取文件并决定是否运行并写入其他pid之前,似乎有一些时间间隔。因此

如何检查另一个程序实例是否已经在UNIX系统下运行?和
exit()
如果是


进程启动时,我已经在使用带有
pid
file
。然后我检查pid是否存在。但有时程序会以意外的行为运行,我有大量的程序副本在运行。

使用适当的同步机制(例如a),以防止程序启动两次。

如果您正在向文件写入PID,则应使用flock序列化对文件的访问。

很难判断实际发生了什么问题,如果您希望不公开您的代码,@πάνταῥεῖ 在新pid写入文件之前,以及在另一个实例读取文件并决定是否运行并写入其他pid之前,似乎有一些时间间隔。因此,并发开始。我想试试其他的算法。‘出人意料的海狸’多么可爱的一个“blooper”:-D。类似于“哇!未剃须:-/”…没有必要在标题中提及语言;这就是标签的用途。在任何情况下,语言的名称是C++,而不是CPP;名称“cpp”通常指的是C预处理器。链接线程上描述“听起来不错”的可能重复。不会阻止一点“如何”的代码。遗憾的是,这篇文章的作者还没有添加它。@abrahab是的,可能不是我首先选择的最佳链接。我已经改变了它,尝试它更适合你需要的IMHO。有一些以前的链接和这个不同。互斥vs.信号量:)在第一个链接@abrahab上“上一个链接之间有一些区别…”是的,当然,这就是我更改它的原因。希望这一个给你更多的价值,解决你的问题。