進(jìn)程控制開發(fā)之:Linux守護(hù)進(jìn)程
7.3.3守護(hù)進(jìn)程的出錯處理
讀者在前面編寫守護(hù)進(jìn)程的具體調(diào)試過程中會發(fā)現(xiàn),由于守護(hù)進(jìn)程完全脫離了控制終端,因此,不能像其他普通進(jìn)程一樣將錯誤信息輸出到控制終端來通知程序員,即使使用gdb也無法正常調(diào)試。那么,守護(hù)進(jìn)程的進(jìn)程要如何調(diào)試呢?一種通用的辦法是使用syslog服務(wù),將程序中的出錯信息輸入到系統(tǒng)日志文件中(例如:“/var/log/messages”),從而可以直觀地看到程序的問題所在。
注意 | “/var/log/message”系統(tǒng)日志文件只能由擁有root權(quán)限的超級用戶查看。在不同Linux發(fā)行版本中,系統(tǒng)日志文件路徑全名可能有所不同,例如可能是”/var/log/syslog” |
syslog是Linux中的系統(tǒng)日志管理服務(wù),通過守護(hù)進(jìn)程syslogd來維護(hù)。該守護(hù)進(jìn)程在啟動時會讀一個配置文件“/etc/syslog.conf”。該文件決定了不同種類的消息會發(fā)送向何處。例如,緊急消息可被送向系統(tǒng)管理員并在控制臺上顯示,而警告消息則可被記錄到一個文件中。
該機(jī)制提供了3個syslog相關(guān)函數(shù),分別為openlog()、syslog()和closelog()。下面就分別介紹這3個函數(shù)。
(1)syslog相關(guān)函數(shù)說明。
通常,openlog()函數(shù)用于打開系統(tǒng)日志服務(wù)的一個連接;syslog()函數(shù)是用于向日志文件中寫入消息,在這里可以規(guī)定消息的優(yōu)先級、消息輸出格式等;closelog()函數(shù)是用于關(guān)閉系統(tǒng)日志服務(wù)的連接。
(2)syslog相關(guān)函數(shù)格式。
表7.9列出了openlog()函數(shù)的語法規(guī)范。
表7.9 openlog()函數(shù)語法
所需頭文件 | #includesyslog.h> | |
函數(shù)原型 | voidopenlog(char*ident,intoption,intfacility) | |
函數(shù)傳入值 | ident | 要向每個消息加入的字符串,通常為程序的名稱 |
option | LOG_CONS:如果消息無法送到系統(tǒng)日志服務(wù),則直接輸出到系統(tǒng)控制終端 | |
LOG_NDELAY:立即打開系統(tǒng)日志服務(wù)的連接。在正常情況下,直接發(fā)送到第一條消息時才打開連接 | ||
LOG_PERROR:將消息也同時送到stderr上 | ||
LOG_PID:在每條消息中包含進(jìn)程的PID | ||
facility:指定程序發(fā)送的消息類型 | LOG_AUTHPRIV:安全/授權(quán)信息 | |
LOG_CRON:時間守護(hù)進(jìn)程(cron及at) | ||
LOG_DAEMON:其他系統(tǒng)守護(hù)進(jìn)程 | ||
LOG_KERN:內(nèi)核信息 | ||
LOG_LOCAL[0~7]:保留 | ||
LOG_LPR:行打印機(jī)子系統(tǒng) | ||
LOG_MAIL:郵件子系統(tǒng) | ||
LOG_NEWS:新聞子系統(tǒng) | ||
LOG_SYSLOG:syslogd內(nèi)部所產(chǎn)生的信息 | ||
LOG_USER:一般使用者等級信息 | ||
LOG_UUCP:UUCP子系統(tǒng) |
表7.10列出了syslog()函數(shù)的語法規(guī)范。
表7.10 syslog()函數(shù)語法
所需頭文件 | #includesyslog.h> | |
函數(shù)原型 | voidsyslog(intpriority,char*format,...) | |
函數(shù)傳入值 | priority:指定消息的重要性 | LOG_EMERG:系統(tǒng)無法使用 |
LOG_ALERT:需要立即采取措施 | ||
LOG_CRIT:有重要情況發(fā)生 | ||
LOG_ERR:有錯誤發(fā)生 | ||
LOG_WARNING:有警告發(fā)生 | ||
LOG_NOTICE:正常情況,但也是重要情況 | ||
LOG_INFO:信息消息 | ||
LOG_DEBUG:調(diào)試信息 | ||
format | 以字符串指針的形式表示輸出的格式,類似printf中的格式 |
表7.11列出了closelog()函數(shù)的語法規(guī)范。
表7.11 closelog函數(shù)語法
所需頭文件 | #includesyslog.h> |
函數(shù)原型 | voidcloselog(void) |
pid控制相關(guān)文章:pid控制原理
linux相關(guān)文章:linux教程
pid控制器相關(guān)文章:pid控制器原理
評論