Linux——进程终止、僵尸进程的解决--进程等待

进程终止:

1.终止的场景:

    正常退出:结果符合预期

    正常退出:结果不符合预期

    异常退出

2.退出方式:

(1)return  :退出前会刷新缓冲区

(2)exit():退出前会刷新缓冲区(库函数

(3)_exit():退出前不会刷新缓冲区(系统调用接口

3.返回值:查看进程的返回值:echo $

进程等待:

1.pid_t wait(int *status);  阻塞函数

status:用于获取退出原因

 返回值:退出的子进程的pid

2.pid_t waitpid(pid_t pid,int *status,int options);  该函数默认阻塞,但可以通过options来设置是否阻塞

pid:

  -1: 等待任意子进程退出

  >0: 等待指定子进程退出

status: 用于获取退出原因

options:

      WNOHANG   将waitpid设置为非阻塞

返回值:-1  错误  0:没有子进程退出  >0:退出的子进程的pid

3.进程退出原因的获取:被保存在status变量中

通过自己移位运算操作来获取,或者通过以下方式:

WIFEXISTED(status):判断进程是否正常退出,正常退出返回true

WEXISTSTATUS(status) :在进程正常退出时,获取子进程退出码

所以只要在父进程中等待子进程退出就可以避免僵尸进程的产生。

发布了58 篇原创文章 · 获赞 43 · 访问量 4399

猜你喜欢

转载自blog.csdn.net/Wz_still_shuai/article/details/100121441