0

我一直试图在我的代码中的某个时刻启动和关闭一个外部程序,并且依靠system()调用来完成它。但是,这里有人建议我使用execlpstd::thread完全分开,以抑制控制台输出。

问题是,这两种解决方案都意味着等待程序关闭,我想避免这种情况,因为我需要与该程序通信(现在通过 UNIX 套接字)。有什么方法可以使用execlpstd::thread在后台启动程序,就像我一样system([program]&)

4

1 回答 1

1

实际上你可以使用线程:)但要小心......在父/所有进程/es中产生任何线程fork 之前最简单的方法。然后,在fork您可以启动任何需要的线程之后(您想要的任何地方:在父进程和子进程中)。

fork在子进程中没有自动启动线程,但我想你不需要它们......孩子通常会做一些准备和所需exec的进程,所以你不需要在其中重新生成任何线程。(无论如何,如果你愿意,你可以做到!)。然后,你必须看着你的孩子waitpid,等待它的死亡。

PS:man pthread_atfork如果您真的需要孩子的一些线程,也请阅读。

于 2013-07-23T11:37:11.550 回答