进程学习

进程学习总结

1.进程基本理解

正在执行的程序就叫进程。

2.进程的产生

在Linux环境下可以使用fork()函数创建进程,使用fork()函数的进程就是fork()函数产生进程的父进程。

3.对新产生进程的操作

使用exec系列函数

exec系列函数共同点就是把一个进程执行的程序换成你指定的程序
在一个进程中,如果你想执行多个程序,那就要使用exec系列函数。
在该进程中,使用fork函数产生一个子进程,然后在该子进程中使用exec子列函数把该进程执行的程序替换,就可以执行你的程序,执行完后退出回到父进程就好。

4.僵尸进程的产生

操在作系统中,一个父进程可以有很多子进程,父进程并不能预测子进程何时结束,所以需要父进程调用wait()/waitpid()函数收集子进程情况,以便子进程结束时系统能及时回收资源。当父进程未调用wait()/waitpid()函数时,若子进程结束,则该子进程成为僵死进程,占用系统的进程号。

5.孤儿进程

一个拥有子进程的父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(一般进程号为1的进程为init进程)所收养,并由init进程对它们完成状态收集工作。

6.危害

在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。 但是仍然为其保留一定的信息(包括进程号,退出状态,运行时间等等)。直到父进程通过wait() / waitpid()函数来取时才释放。 但这样就导致了问题如果进程不调用wait ()/ waitpid()函数的话, 那么系统保留的进程信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 这就是僵尸进程的危害。

孤儿进程一般没有什么危害,init进程会把他们妥善处理,当孤儿进程结束时init进程会自动将其回收

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值