1.概述
进程控制包括创建新进程,进程终止,等待,执行程序几个操作。
2.新建进程:fork系列函数
2.1 fork
#include <unistd.h>
pid_t fork(void);
调用一次fork,会返回2次,子进程返回0,父进程返回子进程的pid;出错返回-1。
子进程获得父进程数据空间,堆和栈的副本。
父进程中所有打开的文件描述符都被复制到子进程中,对每个打开的文件描述符,父进程和子进程共享一个文件表项。
2.2 vfork
vfork与fork的两点区别:
1)不将父进程的地址空间完全复制到子进程中,适用情况:创建一个新进程,新进程的目的是exec一个新程序;
2)vfork保证子进程先运行,fork不确定。
3.进程终止:exit系列函数
3.1 exit
#include <stdlib.h>
void exit(int status);
exit函数调用各终止处理程序(用atexit登记),并关闭所有标准I/O流,然后返回内核
3.2 _exit和_Exit
#include <stdlib.h>
void _Exit(int status);
#include <unistd.h>
void _exit(int status);
_exit和_Exit与exit的区别:不调用终止处理程序,也不冲洗标准I/O流,直接返回内核
3.3 atexit
#include <stdlib.h>
int atexit(void (*func)(void));
用来登记终止处理程序,登记后的函数将由exit自动调用,可以登记多个终止处理程序,执行顺序与注册时相反。
本文详细介绍了进程控制的概念,包括创建新进程(fork系列函数)、进程终止(exit系列函数)及进程终止处理程序的登记(atexit)。重点讲解了fork与vfork的区别以及exit与_Exit的不同之处。
1741

被折叠的 条评论
为什么被折叠?



