课题中的一些词

守护进程(daemon)

在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。

操作

守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息不在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。

那么,如何编程将一个普通进程变身为一个守护进程呢?

1.fork()一个子进程

这一步保证生成的子进程即不是一个session的首进程,也不是一个进程组的首进程;为第二步作准备。

2.在子进程中,调用setsid

这个系统调用新建一个session,将子进程从原来的session中脱离出来,并且切断和控制终端的联系。

3.再次调用fork

经过第二步生成的子进程其实已经是一个守护进程了,但它同时还是新会话的首进程,这样的进程可以通过一定手段重新获取控制终端。所以此处fork的目的就是为了保证第二个子进程不是session的首进程,这样它永远都无法和控制终端发生任何的联系了。

4.为了慎重期间,对全部的文件描述符执行一次关闭操作。

如何有根据的判断一个后台进程是否是一个守护进程?

通过命令ps axo pid,ppid,stat,tty,sid,cmd 就可以看到该进程的各个指标,这样就可以判断了。


发布了9 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/juan190755422/article/details/41693409