> 文章列表 > 进程控制及其操作

进程控制及其操作

进程控制及其操作

  1. 进程创建

1.1 fork()函数

1.2 fork()函数的返回值

  1. 进程等待

2.1 进程等待的必要性

1.之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。 2.另外,进程一旦变成僵尸状态,那就刀枪不入,"杀人不眨眼"的kill -9 也无能为力,因为谁也没有办法 杀死一个已经死去的进程。 3.最后,父进程派给子进程的任务完成的如何,我们需要知道。如,子进程运行完成,结果对还是不对, 或者是否正常退出。 进程等待的作用:父进程通过进程等待的方式,回收子进程资源,获取子进程退出信息.

2.2 使用进程等待的方法

  1. 通过调用pid_t wait(int* status)函数。成功则返回被等待子进程的pid,失败返回-1。

  1. 通过调用pid_t waitpid(pid_t id, int* status, int options)函数

2.3 其他

  1. 如果子进程已经退出,调用wait/waitpid时,wait/waitpid会立即返回,并且释放资源,获得子进程退 出信息。

  1. 如果在任意时刻调用wait/waitpid,子进程存在且正常运行,则进程可能阻塞。

  1. 如果不存在该子进程,则立即出错返回。

  1. 进程终止

3.1 进程退出场景

3.1.1 代码运行完毕,结果正确。

3.1.2 代码运行完毕,结果不正确。

3.1.3 代码异常终止。

3.2 进程退出方法

【正常退出】:(可以通过echo $?查看进程退出码,退出码:main函数中return后面的数字)

3.2.1 从mian函数return返回。

3.2.2 任意地方调用exit()库函数。

3.2.3 _exit()系统函数。

3.2.4 exit与_exit的区别:exit会刷新缓冲区、_exit不会刷新缓冲区。

【异常退出】