僵尸进程和守护进程

僵死进程:父进程未结束,子进程已结束,并且父进程已经获取子进程的退出状态。这种进程,进程主体空间已经释放,只有PCB还未释放。

处理方法:

(1)父进程调用wait函数或者waitpid函数获取子进程的退出状态,这种方法可能导致父进程在wait或waitpid调用出阻塞运行,直到子进程退出。

(2)父进程调用signal,来忽略signal信号,这样子进程结束后会由内核释放资源。

(3)对子进程的退出捕获她们的退出信号signal,父进程退出信号时,在信号处理函数中调用wait或waitpid操作来释放他们的资源。

孤儿进程:父进程已结束,子进程还未结束。孤儿进程会被系统守护进程init收养,并为他们完成工作状态收集工作。

守护进程:通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。在操作系统中在系统的引导的时候会开启很多服务。

守护进程的编程规则:

(1)先fork(),退出父进程          

// 把进程变成一个普通的进程
(2)通过setsid()创建新会话        

//不退出父进程,新会话创建不了
(3)//再fork(),退出父进程    

// 该进程已经成为一个新的会话的组长,但是它可以重新申请打开一个终端,可以通过fork()一个子进程,该子进程不是会话的首进程,该进程将不能重新打开控制终端。退出父进程。
(4)修改工作目录 chdir("/")        

//放在一个不可卸载的目录下
(5)清除掩码 umask()      

// 由于使用fork()函数创建的子进程继承了父进程的文件权限掩码,这就给子进程使用文件带来了很多麻烦。因此把文件权限设置0,可以大大增强该守护进程的灵活性。
(6)关闭所有文件描述符 close()    

//长时间的在后台运行,把不需要的描述符关闭

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值