我有一个服务,比如foo,用C++编写,以root身份运行.有通常的脚,/ etc/init.d/foo start | stop | restart.
在某些时候,foo需要重新加载自己.通常在升级完成后.但做的事情如下:
system("/etc/init.d/foo restart")
因为一旦重新启动杀死foo,系统()调用显然也会被杀死,并且重启脚本永远不会执行完成.
是否有另一个我可以使用的调用而不是system()作为调用进程的兄弟,而不是创建一个同步子进程异步运行?
谢谢!
你考虑过这个exec[*]
家庭吗?这是一个 - execve
.
您可以将它放在inittab中,让init担心在出于任何原因退出时重新启动该进程.如果您的进程发生崩溃或断言(或以其他方式意外退出),这也会处理自动重启.
然后,为了处理您的用例,该过程将自行终止.
fork()后跟exec()怎么样?