守护进程与inetd

守护进程是UNIX系统中非常重要的一种进程,简单来说就是在后台运行且不与任何终端交互的进程,此种程序的的登记消息方式采用syslog函数由syslogd进程来执行。

让一个进程成为守护进程的方法为:

fork生成子进程,_exit父进程,对子进程调用setsid使得子进程成为一个新会话的会话首进程,接着屏蔽SIGHUP信号(会话首进程结束时会话组中所有进程都会收到),再次fork,依旧结束父进程,这样最后的孙子进程就不是会话首进程,然后关闭所有的描述字,并将0,1,2三个描述字都打开到/dev/null,最后openlog促使消息登记(但如果不采用LOG_NDELAY选项则unix域套接口一直到首次调用syslog才打开)。

linux下提供的将进程转为守护进程的函数为daemon, 可参考man手册。

inetd是一种常用的守护进程,它可以将很多需要服务的程序由自己一个人处理,根据/etc/inetd.conf和/etc/service的配置,inetd创建FTP,TELNET等各种等待端口,当有客户连接时根据/etc/inetd.conf的参数创建子进程或者直接调用程序服务。

转载请注明来源:Leoncom-《守护进程与inetd》
Trackback

no comment untill now

Add your comment now