C语言高级操作(四)——exex函数族

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 不覆盖
返回值:

猜你喜欢

转载自blog.csdn.net/weixin_44463519/article/details/129735143