0

我有一个 C 程序,它有一个“守护进程”模式,这样我就可以让它在后台运行。当它使用“-d”运行时,它使用以下代码进行分叉:

if(daemon_mode == 1)
{
    int i = fork();
    if(i<0) exit(1); // error
    if(i>0) exit(0); // parent
}

我创建了一个初始化脚本,当我手动运行初始化脚本来启动我的守护进程时,它启动正常,但是,如果我用“停止”运行它,守护进程不会停止。

我想问题是由于分叉导致PID发生了变化,我没有错,我该如何解决?

4

1 回答 1

1

如果您使用 pid 文件来控制进程,那么您很可能正确地认为更改 pid 会导致问题。只需在守护进程之后而不是之前编写 pid 文件。

于 2013-02-07T22:22:15.703 回答