fork()函数可以用来复制多线程进程吗?如果是这样,所有线程都会完全相同,如果不是,为什么不呢?如果无法通过 fork 完成复制,有其他函数可以帮我完成吗?
分叉后,子进程中只有一个线程在运行。这是 POSIX 标准要求。请参阅问题 fork 和现有线程?的最佳答案。
不,子进程只有一个线程。分叉线程进程并非易事。 (请参阅这篇文章线程和 fork():在混合它们之前要三思而后行以获得良好的概述)。
我不知道克隆进程及其所有线程的任何方法,我认为这在 Linux 上是不可能的。
没有。
fork 使用自己的线程创建一个新进程,复制文件描述符和虚拟内存。
子进程不与其父进程共享相同的内存。所以这绝对不一样。
假设其他线程之一(除执行 fork( ) 的线程之外的任何线程)负责从您的支票帐户中扣除资金。
POSIX 定义了在存在线程的情况下 fork() 的行为,以仅传播分叉线程。
如果其他线程锁定了互斥锁,则该互斥锁将在子进程中被锁定,但锁的所有者将不存在来解锁它。因此,受锁保护的资源将永久不可用。
http://www.doublersolutions.com/docs/dce/osfdocs/htmls/develop/appdev/Appde193.htm