我有多线程应用程序,可以作为deamon进程运行,也可以使用输入参数运行一次。
我想确保如果应用程序作为deamon进程运行,则不应允许用户再次运行它。
编辑:在你们都建议去寻找鸡群之后,我试了一下并把它放在服务器里。我知道有奇怪的问题,当服务器被退回时,他们会删除所有文件,包括锁定文件:(。现在怎么样?
答案 0 :(得分:5)
最简单的方法是绑定到一个端口(可以是unix域,在“私有”目录中)只有一个进程可以绑定到端口,所以如果绑定了端口,那么进程在跑。如果进程退出,内核会自动关闭filedescriptor。它会使您的进程花费(未使用的?)文件描述符。通常,守护进程无论如何都需要一些侦听套接字。
答案 1 :(得分:3)
您可以尝试使用file locks。启动该过程后,您可以打开文件,锁定它,并检查值(例如文件大小)。如果它不是所需的值,则该过程可以退出。如果需要,请将文件更改为不需要的值。
答案 2 :(得分:2)
我通过使用shell脚本启动和停止守护程序来实现类似的功能。
在exe调用之前的启动脚本中查看此exe是否仍在运行。如果发现它仍在运行,则不会启动新进程。