导航

进程创建

书籍: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编辑  收藏  举报