从另一个 C 进程创建一个新的独立进程

标签 c process sockets exec fork

存在两个 C 可执行文件 A 和 B。 A和B通过套接字相互通信。

B可以独立启动,也可以通过A启动。

  1. 如果先启动 B,然后启动 A,则 A 和 B 可以正常启动,不会出现问题。 即使A重新启动,也没有问题。

  2. 如果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/

相关文章:

c - 在其他输入之后使用 fgets()

c# - 如何在 C# 中确定当前关注的进程名称和版本

c++ - 父进程没有捕获他所有的子进程

c++ - 将 IPv4 地址从 ifaddrs 结构分配给 sockaddr_in 结构

TCP 套接字上的 send() 可以返回 >=0 和 <length 吗?

c - 将文件内容读取到字符串中,同时跳过前两行

c - 从文件中读取并存储在数组中

c - 在 C 中交换指针数组中的 2 个元素(到不同长度的字符串)

actionscript - Adobe Air Native Process 仅适用于 Flash 环境,但部署后出现错误 #3219

C++ 如何从 TCP 套接字检索 ACK (windows)