在多线程程序中执行另一个程序

时间:2010-05-20 05:25:19

标签: c multithreading pthreads

只是想知道如何在一个线程中执行另一个程序并将信息发送到/从中获取信息。基本上与子进程和使用管道进行通信的概念相同 - 但是我不想使用fork。

我似乎无法找到是否可以这样做,任何帮助都会受到赞赏。

由于

2 个答案:

答案 0 :(得分:2)

您不能使用exec系列函数在线程中加载另一个可执行文件; exec函数用从可执行文件开始的进程替换整个进程。因此,如果您希望原始流程继续运行,则fork()是必需的。

理论上,您可以复制用户空间中exec系统调用的大多数行为,并在线程中运行可执行文件 - 但是由于线程将共享打开的文件表,信号处理程序等等在此过程的其余部分,它可能会破坏性地干扰主要过程。这也是很多工作。

答案 1 :(得分:0)

如果你没有使用fork(直接或间接),那么它并不是真正的另一个过程。当然,您可以在进程内的线程之间进行通信。这对于大多数多线程来说都是必不可少的。