一、文件描述符
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
flags:
O_CLOEXEC:进程执行exec时,会被关闭
O_ADDEND:追加写
文件描述符:
0:stdin
1:stdout
2:stderr
二、写时拷贝(copy-on-write)
进程fork之后,新的进程并没有立即拷贝一个新的内存页,而是指向父进程的内存页;当读取时,直接读取父进程的内存页数据;当写发生时,如果权限允许,则立即拷贝一个内存页,然后实现写操作。
fast path:在fork的子进程没有写操作时,效率就很高
slow path:当fork子进程有写操作时,拷贝内存页
三、状态机的复制
fork创建进程,拷贝所有状态(但不包括同进程的其他线程的状态)