多进程程序设计,王明学learn
多进程程序设计
一、函数学习
1.1 创建进程fork
1.1.1 函数原形
pid_t fork(void);
1.1.2 函数功能
创建一个子进程
1.1.3 所属头文件
<unistd.h>
1.1.4 返回值
成功:父进程返回创建成功的子进程pid子进程返回 0
失败:父进程返回
1.1.5 参数说明
无
1.2 创建进程vfork
1.2.1 函数原形
Pid_t vfork();
1.2.2 函数功能
创建一个子进程,并阻塞父进程
1.2.3 所属头文件
<sys/types.h> <unistd.h>
1.2.4 返回值
成功:父进程返回创建成功的子进程pid子进程返回 0
失败:父进程返回 -1
1.2.5 参数说明
无
fork和vfork对比:
fork和vfork都可以用于创建子进程,但是也有如下不同之处:
1. fork:子进程拥有独立的数据段,堆栈。vfork:子进程与父进程共享数据段,堆栈。
2. fork:父、子进程的执行次序不确定vfork:子进程先运行,父进程后运行
1.3 进程等待wait
1.3.1 函数原形
pid_t wait(int* status);
1.3.2 函数功能
挂起调用它的进程,直到其子进程结束
1.3.3 所属头文件
<sys/types.h> <sys/wait.h>
1.3.4 返回值
成功:返回终止的那个子进程id
失败: -1
1.3.5 参数说明
status:记录子进程退出状态
1.4 执行程序函数名execl
1.4.1 函数原形
int execl(const char* pathname,const char*arg,…)
1.4.2 函数功能
运行一个可执行文件
1.4.3 所属头文件
<unsitd.h>
1.4.4 返回值
成功:不返回
失败:返回
1.4.5 参数说明
Pathname:要运行的可执行文件路径
arg:可执行文件运行需要的参数
1.5终止进程exit等同于_Exit
1.5.1 函数原形
void _exit(int status)
1.5.2 函数功能
终止正在调用的进程
1.5.3所属头文件
<unistd.h>
1.5.4 返回值
无
1.5.5 参数说明
status被用作进城退出状态返回给父进程
父进程退出:可以是return 0和exit退出
子进程退出:只能是exit