【发布时间】:2013-07-23 10:40:38
【问题描述】:
我一直在尝试在我的代码中的某个时间点启动和关闭一个外部程序,并且依靠system() 调用来实现这一点。但是,here 建议我完全使用execlp 和单独的std::thread,以抑制控制台输出。
问题是,这两种解决方案都意味着等待程序关闭,我想避免这种情况,因为我需要与该程序通信(现在通过 UNIX 套接字)。有什么方法可以使用execlp 或std::thread 在后台启动程序,就像我使用system([program]&) 一样?
【问题讨论】:
-
当您使用
exec系列函数时,您不能使用线程。您必须使用fork系统调用创建一个全新的进程。 -
至于怎么做,网上有很多,很多,例子。在您最喜欢的搜索引擎中进行简单搜索即可找到数百个示例。
标签: c++ multithreading unix execution