4.1创建进程
4.1.1 函数名
fork
4.1.2 函数原形
pid_t fork(void)
4.1.3 函数功能
创建一个子进程
4.1.4 所属头文件
#include<unistd.h>
4.1.5 返回值
成功:在父进程中返回子进程的pid
在子进程中返回的是0
失败: -1
4.1.6 参数说明
无参数
4.2创建进程
4.2.1 函数名
vfork
4.2.2 函数原形
pid_t vfork(void)
4.2.3 函数功能
创建一个子进程,并阻塞父进程
4.2.4 所属头文件
#include <sys/types.h>
#include <unistd.h>
4.2.5 返回值
成功:在父进程中返回子进程的pid
在子进程中返回的是0
失败: -1
4.2.6 参数说明
无参数
4.3 进程等待
4.3.1 函数名
wait
4.3.2 函数原形
pid_t wait(int *status)
4.3.3 函数功能
挂起调用它的进程,直到其子进程结束
4.3.4 所属头文件
#include<sys/types.h>
#include<sys/wait.h>
4.3.5 返回值
成功:返回终止的那个子进程的id
失败:返回-1
4.3.6 参数说明
status: 记录子进程的退出状态
4.4 执行程序
4.4.1 函数名
execl
4.4.2 函数原形
int execl(const char *path,const char *arg,…)
4.4.3 函数功能
运行可执行文件
4.4.4 所属头文件
#include<unistd.h>
4.4.5 返回值
成功:不返回
失败:才返回
4.4.6 参数说明
path:要运行的可执行文件的路径
arg:可执行文件运行需要的参数
fork与vfork区别:
1>fork的父进程与子进程不一定那个先那个后.
vfork先执行子进程后运行父进程.
2>fork创建的子进程具有独立的数据段,堆,栈
vfork创建的子进程与父进程共享数据段,堆,栈
fork与exec区别:
exec执行后是将原有的代码覆盖掉,变成exec的执行程序.