进程创建
书籍:Linux系统编程手册上册,第二十四章,进程的创建
- fork
系统调用fork允许进程创建子进程。子进程获得父进程调用fork前的栈、数据段、堆和执行文本段的拷贝,之后所有的数据在拷贝段修改,也无法获得父进程的数据,父进程和子进程的通信通过进程间通信完成。
- exit
如果不return的话,也可以通过库函数exit终止进程。该操作将进程占用的所有资源(内存、文件描述符等)归还内核,交期进行再次分配。
库函数位于系统调用_exit之上。
- wait
为系统调用,由父进程调用,父进程调用wait后会挂起直至子进程终止。
- exec
为系统调用。通过execve可以加载一个新程序到当前进程的内存,通常在调用fork之后,在子进程里调用execve。该操作会丢弃现存的程序文本段,并为新程序重新创建栈、数据段以及堆。
即创建一个新进程并执行指定程序。
v | 指定程序的参数列表,在exec参数列表中,由vector保存 |
l | 指定程序的参数列表,写在exec的参数列表 |
p | 可以只给出指定程序的名称 |
e | 给出指定程序的环境变量列表 |
函数 | 程序描述 | 参数描述 | 环境变量来源 |
execve | 路径 | vector | envp参数 |
execle | 路径 | 参数列表 | envp参数 |
execlp | 路径/程序名 | 参数列表 | 调用者的environ |
execvp | 路径/程序名 | vector | 调用者的environ |
execv | 路径 | vector | 调用者的environ |
execl | 路径 | 参数列表 | 调用者的environ |
- waitpid
#include <sys/wait.h> pid_t waitpid(pid_t pid, int *status, int options);
pid不为0,返回值为-1则异常,其他为子进程ID。
posted on 2021-04-07 16:29 toughcactus 阅读(46) 评论(0) 编辑 收藏 举报