这是一个简单的"hello world"C程序,需要10秒才能完成:
#include<stdio.h>
main()
{
printf("hello World 1 \n");
fflush(stdout);
sleep(10);
printf("hello World 2 \n");
fflush(stdout);
}
Run Code Online (Sandbox Code Playgroud)
如何修改它,以便最多只能在任何时刻运行此可执行文件的一个实例?我正在使用Linux.
例如,假设服务器崩溃,如果同时运行多个实例,我们正试图阻止这种情况.我希望看到一个或多个不同方式的示例,以便我可以在我的系统上运行和验证.
另外,是否有一种简单的方法来排队,所以如果我连续两次运行C可执行文件,第二个在第一个完成后运行?
通常,您通常会获取文件锁,创建给定文件名的运行时文件,并将进程PID作为初始化时的内容(通常在UNIX系统中/var/run/).退出时删除文件.
如果文件在启动期间已存在,则另一个实例已在运行.