0

我是使用分叉的新手,我无法理解如何实现我想要的。我会尽力解释。

我有进程 A,它是在 Linux 上运行的功能性伯克利套接字服务器。

我需要进程 A 将程序从磁盘加载到后台状态下的单独非阻塞进程(进程 B)中。然后进程 A 需要通过进程 B 对进程 A 的套接字的控制。最后进程 A 需要结束,让进程 B 继续运行。

如果旧进程结束,我不清楚将套接字传递给新进程需要什么,以及创建允许原始进程结束的非阻塞新进程的最佳方法。

4

2 回答 2

3

你不需要做任何特别的事情。只需确保为您希望进程 B 继承的任何文件描述符清除了close on exec标志,并为您不希望进程 B 继承的任何文件描述符设置。然后调用exec以进程 B 替换进程 A。进程 B 将以完整的所有可继承文件描述符开始。

于 2013-01-04T22:57:34.393 回答
0

如果您需要在不使用继承-通过-fork 的情况下传递打开的文件(例如套接字),请使用ioctlwith I_SENDFD这是一个非常详细的描述。(有相应的接收它的机制。)您可以使用连接进程的命名管道或通过变体使用 Unix 域套接字来执行此操作。

于 2013-01-04T23:00:55.613 回答