C-检查此程序是否已在运行

iezvtpos  于 2022-09-21  发布在  Unix
关注(0)|答案(1)|浏览(88)

有没有办法检查程序本身是否已经在运行?我只找到了MS Windows的答案;有没有一种独立于平台/*没有的方法来做到这一点?

4xrmg8kj

4xrmg8kj1#

在POSIX上,您可以使用named semaphores实现此目的。

每当程序启动时,它都应该使用函数sem_open打开一个硬编码到程序中的具有唯一名称的信号量,如果信号量尚不存在,则创建该信号量,然后使用sem_trywait尝试获取该信号量。信号量的初始值应该是1。如果由于已经获取了信号量而导致获取信号量失败,那么程序可能会假设同一程序的另一个示例已经在运行。

相关问题