当前位置:  开发笔记 > 编程语言 > 正文

如何让一个进程在linux中重新加载?

如何解决《如何让一个进程在linux中重新加载?》经验,为你挑选了3个好方法。

我有一个服务,比如f​​oo,用C++编写,以root身份运行.有通常的脚,/ etc/init.d/foo start | stop | restart.

在某些时候,foo需要重新加载自己.通常在升级完成后.但做的事情如下:

system("/etc/init.d/foo restart")

因为一旦重新启动杀死foo,系统()调用显然也会被杀死,并且重启脚本永远不会执行完成.

是否有另一个我可以使用的调用而不是system()作为调用进程的兄弟,而不是创建一个同步子进程异步运行?

谢谢!



1> dirkgently..:

你考虑过这个exec[*]家庭吗?这是一个 - execve.


谢谢.我必须研究的另一个技巧是调用fcntl()在服务器侦听端口上设置FD_CLOEXEC.否则exec'd()应用程序将继承原始套接字并会让我感到悲伤.

2> Ori Pessach..:

您可以将它放在inittab中,让init担心在出于任何原因退出时重新启动该进程.如果您的进程发生崩溃或断言(或以其他方式意外退出),这也会处理自动重启.

然后,为了处理您的用例,该过程将自行终止.



3> Eric Petroel..:

fork()后跟exec()怎么样?

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有