我正在编写一个 init.d 脚本来启动我用 C 编写的程序。该程序遵循一个非常标准的模板,它调用它fork()
来创建一个子进程,然后父进程几乎立即终止。我遇到的问题是 PID 文件将父进程 ID 写入其中,所以后来当我调用“停止”时它失败了,因为父进程早已结束,只有子进程在运行。
目前我的启动脚本中有这个命令:
start-stop-daemon --start --background -m --oknodo --pidfile "$PIDFILE" --exec "$SCRIPT" || return 2
我承认我对这一切都很陌生,所以我什至不完全确定所有这些标志的作用。这主要是我偶然发现的各种文章的复制/粘贴。无论如何,这似乎是一件相当普遍的事情。如何让它在 pid 文件中写入正确的(即子)进程 ID?