多线程下的fork


多线程下的fork函数

在多线程下调用fork函数,仅仅会将发起调用的线程复制到子进程中去,也就是说,不能创建出与父进程一样多的子线程

其他线程均在子进程中立即停止并消失,并且不会为这些线程调用清理函数,这可能会造成子进程内存,文件描述符的泄露

子进程复制父进程的整个地址空间,从父进程那里继承了所有的互斥量和条件变量,如果某个线程锁定了某一个互斥锁,那么在子进程中互斥锁可能因得不到释放而造成死锁现象。

使用方法

1. 调用fork后。立即调用exec函数执行另一个程序,彻底阻断子进程和父进程的关系,由新的进程覆盖掉原有的内存,使子进程中所有的线程相关对象消失

2.使用pthread_atfork() + fork来创建子进程

相关