3

可能的重复:
防止 Linux 上的多个进程实例

我有多线程应用程序,可以作为守护进程运行,也可以使用输入参数运行一次。

我想确保如果应用程序作为守护进程运行,则不应允许用户再次运行它。

编辑:在你们都建议去羊群之后,我试了一下,把它放在服务器上。我知道有一个奇怪的问题,当服务器被退回时,他们会删除所有文件,包括锁定文件:(。现在怎么样?

4

3 回答 3

5

最简单的方法是绑定到一个端口(可以是 unix 域,在“私有”目录中)只有一个进程可以绑定到一个端口,因此如果绑定了端口,则该进程正在运行。如果进程退出,内核会自动关闭文件描述符。它确实花费了您的进程一个(未使用的?)文件描述符。通常,一个守护进程无论如何都需要一些监听套接字。

于 2012-05-25T08:23:39.200 回答
3

您可以尝试使用文件锁。启动该过程后,您可以打开文件、锁定文件并检查值(例如文件大小)。如果它不是所需的值,则该过程可以退出。如果需要值,请将文件更改为不需要的值。

于 2012-05-25T07:40:12.340 回答
2

我通过使用 shell 脚本来启动和停止守护程序来实现类似的事情。

在 exe 调用之前的启动脚本中,查看此 exe 是否仍在运行。如果它发现它仍在运行,则不会启动新进程。

于 2012-05-25T07:51:46.783 回答