有没有办法检查程序本身是否已经在运行?我只找到了MS Windows的答案;有没有一种独立于平台/*没有的方法来做到这一点?
4xrmg8kj1#
在POSIX上,您可以使用named semaphores实现此目的。
每当程序启动时,它都应该使用函数sem_open打开一个硬编码到程序中的具有唯一名称的信号量,如果信号量尚不存在,则创建该信号量,然后使用sem_trywait尝试获取该信号量。信号量的初始值应该是1。如果由于已经获取了信号量而导致获取信号量失败,那么程序可能会假设同一程序的另一个示例已经在运行。
sem_open
sem_trywait
1条答案
按热度按时间4xrmg8kj1#
在POSIX上,您可以使用named semaphores实现此目的。
每当程序启动时,它都应该使用函数
sem_open
打开一个硬编码到程序中的具有唯一名称的信号量,如果信号量尚不存在,则创建该信号量,然后使用sem_trywait
尝试获取该信号量。信号量的初始值应该是1。如果由于已经获取了信号量而导致获取信号量失败,那么程序可能会假设同一程序的另一个示例已经在运行。