c - 如何确保只有一个应用程序副本在运行?

标签 c linux

<分区>

Possible Duplicate:
Preventing multiple process instances on Linux

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

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

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

最佳答案

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

关于c - 如何确保只有一个应用程序副本在运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10750278/

相关文章:

linux - 打印带有列号的页脚

linux - 使用 Linux 的海量直播视频流

mysql - 当从 Sql Developer 连接成功时,无法通过 Redhat 中的 mysql -u root 连接到 mysql

linux - 在 Linux 中更改进程优先级

c - 读取包含二维矩阵的 .txt 文件,fscanf 仅从 .txt 文件中获取第一个数据元素

C - 从 UDP 套接字缓冲区读取字节 (Linux)

c - 在 C 中的非堆对象上使用 free()

c - 使用 makefile 构建 gtk 项目时找不到“gtk/gtk.h”文件

c - 数组的所有元素都被覆盖而不是仅一个元素?

c - 如何在线程中共享内存