我有一个C程序,它有一个“守护进程”模式,所以我可以让它在后台运行。当它使用“-d”运行时,它使用以下代码分叉:
if(daemon_mode == 1)
{
int i = fork();
if(i<0) exit(1); // error
if(i>0) exit(0); // parent
}
我创建了一个init脚本,当我手动运行init脚本启动我的守护程序时,它启动正常,但是,如果我用“stop”运行它,守护程序不会停止。
我想问题是由于分叉导致PID发生了变化,我没有错,我该如何解决?
答案 0 :(得分:1)
如果您正在使用pid文件来控制进程,那么您可能更正确的是更改pid会导致问题。只需在守护进程后而不是之前编写pid文件。