只是想知道如何在一个线程中执行另一个程序并将信息发送到/从中获取信息。基本上与子进程和使用管道进行通信的概念相同 - 但是我不想使用fork。
我似乎无法找到是否可以这样做,任何帮助都会受到赞赏。
由于
答案 0 :(得分:2)
您不能使用exec
系列函数在线程中加载另一个可执行文件; exec
函数用从可执行文件开始的进程替换整个进程。因此,如果您希望原始流程继续运行,则fork()
是必需的。
理论上,您可以复制用户空间中exec
系统调用的大多数行为,并在线程中运行可执行文件 - 但是由于线程将共享打开的文件表,信号处理程序等等在此过程的其余部分,它可能会破坏性地干扰主要过程。这也是很多工作。
答案 1 :(得分:0)
如果你没有使用fork(直接或间接),那么它并不是真正的另一个过程。当然,您可以在进程内的线程之间进行通信。这对于大多数多线程来说都是必不可少的。