存在两个 C 可执行文件 A 和 B。 A和B通过套接字相互通信。
B可以独立启动,也可以通过A启动。
如果先启动 B,然后启动 A,则 A 和 B 可以正常启动,不会出现问题。 即使A重新启动,也没有问题。
如果B通过A启动,则A和B正常启动。但这里通信端口是绑定(bind)到A和B的,这里如果A重启,那么A就无法启动。
由于B是通过A启动的,因此进程A是进程B的父进程。
那么,有没有办法可以让进程B独立于进程A启动呢?
我们尝试使用 fork,但是当我们尝试启动 exe 时使用 fork,会启动两个进程而不是一个。
最佳答案
您是否尝试过使用“包装器”可执行文件来 fork 两次(一次用于 A,一次用于 B),然后自行终止?这将使 A 和 B 作为单独的进程存活,然后由 init 进程继承,并且应该可以安全地重新启动。
关于从另一个 C 进程创建一个新的独立进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/927478/