领导安排了一个重要且紧急工作。其中一个要点,就是保证进程只有一个。而使用者可以运行多个实例。所以唯一办法就是在程序中互斥。怎么互斥?
互斥锁。
网络端口。
文件锁。
考虑到进程会崩溃,需要再启动,所以互斥锁方案不能用。网络端口绑定可以使用,文件锁也可以。考虑到私密性,吾决定使用文件锁。
代码如下:
#define LOCK_FILE "./process.lock" bool isRunningNow() { int fd = open(LOCK_FILE, O_RDONLY | O_CREAT, 0644); if (fd < 0) { return false; } //测试互斥锁定区域 return (lockf(fd, F_TLOCK, 0) == 0); }