有没有办法编写一个C代码,让我们可以确定一个应用程序的以前的实例是否已经在运行? 我需要用Linux和Windows的便携方式来检查这两个版本,都使用最新版本的GCC。
便携式代码的任何例子都会有很大的帮助。 我现在看到两个select:
谢谢! 贝乔。
PS。 SO有不同的要求,所以如果你知道一个而不是另一个,请回答。 毕竟,如果没有可移植的“单一”方式,我仍然可以使用#ifdef和提出的代码作为答案。
C语言(不是C ++),控制台应用程序,gcc,linux和windows
不幸的是,如果你把自己限制在C,你可能会很难做到这一点。 使用C ++,有进程间进程的named_mutex ,但在C上,你必须:
/dev/shm
路径。 对于Windows来说,互斥量效果很好。
http://msdn.microsoft.com/en-us/library/ms682411(v=vs.85).aspx
文章还提到了一个互斥体的替代方案….
要将您的应用程序限制为每个用户一个实例,请在用户的配置文件目录中创建一个锁定的文件。
Unixland中规范的方法是让进程将自己的PID写入已知位置的文件。 如果这个文件存在,那么程序可以检查自己的pid(通过系统调用可用)与该文件中的pid,如果不熟悉,则知道另一个进程正在运行。
C不提供内置设施来检查应用程序是否已经运行,因此,跨平台很难/不可能。 但是,在Linux上,可以使用IPC 。 而且,在Windows(我不是很有经验的这个类别),你可能会觉得这很有帮助。