2011-05-19 74 views
14

fork()函数可用于复制多线程进程。如果是这样,所有的线程都将完全相同,如果不是,为什么不呢。如果复制不能通过fork来完成,有没有其他函数可以为我做?多线程叉

+0

你见过[这个问题](http://stackoverflow.com/questions/1235516/fork-in-multi-threaded-program)?或[这一个](http://stackoverflow.com/questions/1073954/fork-and-existing-threads)?基本上只有'fork()'线程在子进程中存在。你想达到什么目的? – Zecc 2011-05-19 10:17:21

+0

其实我试图为可靠执行创建一个复制进程,其中复制进程将通过执行相同的代码来验证主进程的输出。 – MetallicPriest 2011-05-23 13:20:45

回答

13

不,孩子只会有一个线程。分叉线程不是微不足道的。 (请参阅此文章Threads and fork(): think twice before mixing them以获得良好的概述)。

我不知道克隆进程及其所有线程的任何方式,我认为这在Linux上是不可能的。

+2

+1,非常翔实的博客文章。 – DarkDust 2011-05-19 10:11:29

-1

叉创建了自己的线程(S),拷贝文件描述符和虚拟内存的新进程。

子进程不会与他的父亲共享相同的内存。所以这是绝对不一样的。