进程创建
书籍: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 阅读(59) 评论(0) 收藏 举报
浙公网安备 33010602011771号