分类:
2012-10-19 10:48:38
原文地址:精灵进程 作者:famdestiny
1、首先调用fork,然后使父进程exit.2、调用setsid以创建一个新的会话。3、调用chdir将工作目录改为根目录。4、将文件方式创建屏蔽字设为0.(umask(0);)5、关闭不需要的文件描述字。例子:
|
二、出错记录
与精灵进程有关的最大的一个问题是如何处理出错信息。因为没有控制终端,所以不能写到标准出错输出上。svr4以及4.3+BSD都提供了对应的处理方式,详情可参见APUE第13章,这里只记录下4.3+BSD上的方法。
子从4.2+bsd以来,广泛地采用了BSD syslog设施。有三种方法产生记录消息:
- 内核例程可以调用log函数。任何一个用户进程通过打开和读/dev/klog设备就可以读取这些消息。
- 大多数用户进程(精灵进程)调用syslog函数以产生记录消息。这使消息发往UNIX域数据报套接口/dev/log
- 进程还可以将数据发往消息记录主机的UDP端口514,这要求产生记录的进程显示地进行网络编程。
通常syslogd例程读取这三种形式的记录消息,此精灵进程读取/etc/syslog.conf配置文件,该文件决定了不同的消息发往何处。(openlog,syslog,closelog参见man手册)
三、/etc/syslog.conf语法
语法格式:
消息来源.紧急程度(tab这里必须空一个tab)处理方式
说明:
消息来源:如cron,dameon,kern,user......参见(man syslog.conf)
紧急程度:info,err,warn,crit......
处理方式:
- 文件名(注意绝对路径),则写到该文件
- @主机,发往指定主机的syslogd程序
- /dev/konsole,发往本地机器屏幕上
- *,发往所有用户终端
- |程序,通过管道发往指定程序