UNPv1第十二章:守护进程

守护进程(daemon)是在后台运行不受终端控制的进程。Unix系统中一般有很多守护进程在后台运行(20到50个),执行不同的管理任务

1.syslog函数

既然守护进程没有控制终端,它们就不能把消息fprintf到stderr上,从守护进程中登记消息的常用技巧就是调用syslog函数

#include <syslog.h>
void syslog(int priority, const char *message, ... );

priority参数是级别(level)和设施(facility)的组合
Level没有指定,就默认LOG_NOTICE。
Facility如果没有指定就默认LOG_USER

举例来说,当调用rename函数失败时,守护进程可能会做以下调用:
syslog(LOG_INFO | LOG_LOCAL2, “rename(%s, %s): %m”, file1, file2);

当应用程序第一次调用syslog时,它创建一个Unix域数据报套接口,然后调用connect连往syslogd守护进程建立的套机口的众所周知路径名(如 /var/run/log),这个套接口在进程终止前一直打开。另外,进程也可以调用openlog和closelog

#include <syslog.h>
void openlog(const char * ident, int options, int facility);
void closelog(void);

ident是一个字符串,它将被syslog加到每条登记消息的前面,一般情况下它的值为程序名
options参数有以下一个或多个常数“逻辑或”组成
这里写图片描述

2.inetd守护进程

我们在网络编程时会发现,开始的几步都是基本一样的,对于服务器这一端,我们会使用socket, bind, listen ,accept 基本步骤相同,能不能把这几步形成一个总的,当有申请链接来时都调用一个进程链接,然后根据不同的申请fork子进程执行相应的程序呢?答案就是只用inetd守护进程。概括来说:inetd是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求
inetd守护进程是Unix/Linux自己的,他作为一个守护进程,处理请求,我们要做的是给他提供当对于某种链接,某个接口的请求时所要启动的程序就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值