<分区>
Possible Duplicate:
Preventing multiple process instances on Linux
我有一个多线程应用程序,它可以作为守护进程运行,也可以使用输入参数运行一次。
我想确保如果应用程序作为守护进程运行,则不应允许用户再次运行它。
编辑:在你们都建议去flocks之后,我试了一下并把它放在服务器上。我知道有一个奇怪的问题,当服务器被退回时,它们会删除所有文件,包括锁定文件 :(。现在怎么办?
<分区>
Possible Duplicate:
Preventing multiple process instances on Linux
我有一个多线程应用程序,它可以作为守护进程运行,也可以使用输入参数运行一次。
我想确保如果应用程序作为守护进程运行,则不应允许用户再次运行它。
编辑:在你们都建议去flocks之后,我试了一下并把它放在服务器上。我知道有一个奇怪的问题,当服务器被退回时,它们会删除所有文件,包括锁定文件 :(。现在怎么办?
最佳答案
最简单的方法是绑定(bind)到一个端口(可以是 unix 域,在“私有(private)”目录中)只有一个进程可以绑定(bind)到一个端口,所以如果绑定(bind)了端口,进程在跑。如果进程退出,内核会自动关闭文件描述符。它确实使您的进程花费了一个(未使用的?)文件描述符。通常,守护进程无论如何都需要一些监听套接字。
关于c - 如何确保只有一个应用程序副本在运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10750278/