C语言高级操作(四)——exex函数族
文章目录
- 1、waitpid()函数
- 2、exec函数族
- 3、getenv
- 4、setenv
1、waitpid()函数
- 函数接口
pid_t waitpid(pid_t pid, int *status, int options)
- 函数功能
回收子进程空间 - 参数
pid :回收子进程的pid
< -1 回收子进程的进程组ID与传入PID值绝对值相同的子进程空间
-1 回收任一子进程
0 回收子进程的进程组ID与调用函数的进程PID值相同的子进程空间
>0 回收子进程的PID与传入PID相同的子进程空间
status:
回收子进程结束状态
options:
设定阻塞与非阻塞
0 阻塞
WNOHANG 非阻塞
- 返回值
成功返回回收到的子进程PID
失败返回-1
设定为非阻塞且没有回收到子进程返回0
1.进程组:
前台进程组
位于终端前台运行的所有进程会位于前台进程组
后台进程组
位于终端后台运行的所有的进程会位于后台进程组
进程组ID:
前台进程组/后台进程组第一个运行的进程的PID将会作为
前台进程组/后台进程组的进程组ID
2.会话组:
依赖于同一终端的所有进程会位于同一会话组中
2、exec函数族
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg,
..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[],
char *const envp[]);
功能:
利用进程空间执行另外一段代码
参数:
l:参数以列表形式传递
p:在系统路径下找要执行的代码
e:执行新代码时更新环境变量
v:参数以指针数组形式传递
返回值
成功无法返回
失败返回-1
3、getenv
char *getenv(const char *name);
功能:
获得环境变量的值
参数:
name:环境变量名
返回值:
成功返回环境变量值的指针
失败返回NULL
4、setenv
int setenv(const char *name, const char *value, int overwrite);
功能:
设置环境变量的值
参数:
name:环境变量名
value:环境变量的值
overwrite:非0 覆盖
0 不覆盖
返回值: