系统接口:fork( ) 与 fpathconf( ) 函数详解
1. fork( ) 函数
1.1 函数概述
fork( )
函数用于创建一个新进程,新进程(子进程)是调用进程(父进程)的精确副本,但存在一些差异。 _Fork( )
函数与 fork( )
等效,不同之处在于通过 pthread_atfork( )
函数建立的 fork 处理程序不会被调用,且 _Fork( )
是异步信号安全的。
#include <unistd.h>
pid_t fork(void);
pid_t _Fork(void);
1.2 子进程与父进程的差异
子进程与父进程有诸多不同之处,具体如下:
- 进程 ID :子进程有唯一的进程 ID,且该 ID 与任何活动进程组 ID 不匹配,其父进程 ID 为调用进程的进程 ID。
- 文件描述符 :子进程拥有父进程文件描述符的副本,但设置了 FD_CLOFORK
标志的除外。子进程的每个文件描述符与父进程对应的文件描述符指向相同的打开文件描述。
- 其他资源 :子进程有自己的父进程打开目录流、消息目录描述符副本; tms_utime
、 tms_stime </