linux守护进程限制,进程控制开发之:Linux守护进程

本文引用地址:http://www.eepw.com.cn/article/257130.htm

7.3.3守护进程的出错处理

读者在前面编写守护进程的具体调试过程中会发现,由于守护进程完全脱离了控制终端,因此,不能像其他普通进程一样将错误信息输出到控制终端来通知程序员,即使使用gdb也无法正常调试。那么,守护进程的进程要如何调试呢?一种通用的办法是使用syslog服务,将程序中的出错信息输入到系统日志文件中(例如:“/var/log/messages”),从而可以直观地看到程序的问题所在。

注意“/var/log/message”系统日志文件只能由拥有root权限的超级用户查看。在不同Linux发行版本中,系统日志文件路径全名可能有所不同,例如可能是”/var/log/syslog”

syslog是Linux中的系统日志管理服务,通过守护进程syslogd来维护。该守护进程在启动时会读一个配置文件“/etc/syslog.conf”。该文件决定了不同种类的消息会发送向何处。例如,紧急消息可被送向系统管理员并在控制台上显示,而警告消息则可被记录到一个文件中。

该机制提供了3个syslog相关函数,分别为openlog()、syslog()和closelog()。下面就分别介绍这3个函数。

(1)syslog相关函数说明。

通常,openlog()函数用于打开系统日志服务的一个连接;syslog()函数是用于向日志文件中写入消息,在这里可以规定消息的优先级、消息输出格式等;closelog()函数是用于关闭系统日志服务的连接。

(2)syslog相关函数格式。

表7.9列出了openlog()函数的语法规范。

表7.9 openlog()函数语法所需头文件#includesyslog.h>

函数原型voidopenlog(char*ident,intoption,intfacility)

函数传入值ident要向每个消息加入的字符串,通常为程序的名称

optionLOG_CONS:如果消息无法送到系统日志服务,则直接输出到系统控制终端

LOG_NDELAY:立即打开系统日志服务的连接。在正常情况下,直接发送到第一条消息时才打开连接

LOG_PERROR:将消息也同时送到stderr上

LOG_PID:在每条消息中包含进程的PID

facility:指定程序发送的消息类型LOG_AUTHPRIV:安全/授权信息

LOG_CRON:时间守护进程(cron及at)

LOG_DAEMON:其他系统守护进程

LOG_KERN:内核信息

LOG_LOCAL[0~7]:保留

LOG_LPR:行打印机子系统

LOG_MAIL:邮件子系统

LOG_NEWS:新闻子系统

LOG_SYSLOG:syslogd内部所产生的信息

LOG_USER:一般使用者等级信息

LOG_UUCP:UUCP子系统

表7.10列出了syslog()函数的语法规范。

表7.10 syslog()函数语法所需头文件#includesyslog.h>

函数原型voidsyslog(intpriority,char*format,...)

函数传入值priority:指定消息的重要性LOG_EMERG:系统无法使用

LOG_ALERT:需要立即采取措施

LOG_CRIT:有重要情况发生

LOG_ERR:有错误发生

LOG_WARNING:有警告发生

LOG_NOTICE:正常情况,但也是重要情况

LOG_INFO:信息消息

LOG_DEBUG:调试信息

format以字符串指针的形式表示输出的格式,类似printf中的格式

表7.11列出了closelog()函数的语法规范。

表7.11 closelog函数语法所需头文件#includesyslog.h>

函数原型voidcloselog(void)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值