Bootstrap

系统编程-进程初步2

进程初步2

目录

进程初步2

1、进程等待清理函数(wait)

2、等待指定的子进程(waitpid)

3、新的开辟进程的函数(vfork)

4、在程序中运行系统下的指令(system)

5、exec 函数族

例题:

tip1:特殊进程

0号进程

祖先进程

孤儿进程

僵尸进程

tip2:


1、进程等待清理函数(wait)

-- 函数头文件

  • #include <sys/types.h>
  • #include <sys/wait.h>

-- 函数原型

  • pid_t wait(int *wstatus);

-- 函数的作用:

  • 阻塞当前进程 等待子进程死亡

alt text

  • 子进程死亡 解除阻塞 并执行资源的回收

alt text

alt text

  • 获取子进程的退出状态

-- 函数的参数:

  • int *wstatus:用来接收子进程的退出状态
  • 子进程调用exit函数进行退出的参数会放到这里

alt text

  • 通过宏定义可以判断是否为正常退出
  • WIFEXITED(wstatus)
    -- 返回为真     进程为正常结束      如:exit、_exit、 main函数的return
    -- 返回为假      非正常结束    如:段错误、    kill 等
  • WEXITSTATUS(wstatus)
    -- 可以将子进程exit中的参数解出来

alt text

-- 函数的返回值:

  • 成功返回 死亡的子进程的进程号
  • 失败返回 -1

alt text

2、等待指定的子进程(waitpid)

-- wait函数等待的任意一个子进程,谁先死,先执行那个,而下面这个函数可以等待具体哪个进程。

  • pid_t waitpid(pid_t pid, int *wstatus, int options)

-- 函数的作用:

  • 根据参数的填写 进行相应的等待函数
;