守護程序的出錯處理
由於守護程序完全脫離了控制終端,因此,不能像其他程式一樣通過輸出錯誤資訊到控制台的方式來通知程式設計師。
通常的辦法是使用
syslog
服務,將出錯資訊輸入到
「/var/log/message」
系統日誌檔案中去。
syslog
是linux
中的系統日誌管理服務通過守護程序
syslog
來維護。
syslog
函式說明
openlog
函式用於開啟系統日誌服務的乙個連線;
syslog
函式用於向日誌檔案中寫入訊息,在這裡可以規定訊息的優先順序、訊息的輸出格式等;
closelog
函式用於關閉系統日誌服務的連線。
syslog
函式格式 (
1 )openlog
函式 #include
void openlog(char * ident , int option , int facility ) ;
ident :
要向每個訊息加入的字串,通常為程式的名稱;
option
引數: n
log_cons
:若日誌訊息不能通過傳送至
syslogd
,則將該訊息寫至控制台; n
log_ndelay
:立即開啟
unix
域資料報套介面至
syslsgd
守護程序。通常,在記錄第一條訊息之前,該套介面不開啟。 n
log_perror
:除將日誌訊息傳送給
syslog
外,還將它寫至標準出錯(
stderr
)。 n log_pid
:每條訊息都包含程序
id ,此選擇項可供對每個請求都
fork
乙個子程序的守護程序使用。
openlog
的facility 引數
nlog_auth
授權程式
: login.su,getty, ⋯
n log_croncron
和at
n log_daemon
系統守護程序:
ftpd,routed, ⋯
n log_kern
核心產生的訊息 n
log_local0
~7
保留由本地使用 n
log_lpr
行打系統:
lpd, lpc, ⋯
n log_mail
郵件系統 n
log_newsu senet
網路新聞系統 n
log_syslog syslogd
守護程序本身 n
log_user
來自其他使用者程序的訊息 n
log_uucp uucp
系統 syslog
函式 #include
void syslog(int priority , char *format , ...);
priority
選項(訊息優先順序) n
log_emerg
緊急(系統不可使用
) ( 最高優先順序)
nlog_alert
必須立即修復的條件 n
log_crit
臨界條件
( 例如,硬裝置出錯)
nlog_err
出錯條件 n
log_warning
警告條件 n
log_notice
正常,但重要的條件 n
log_info
資訊性訊息 n
log_debug
除錯排錯訊息
( 最低優先順序)
closelog
函式 #include
void closelog(void);
守護程序日誌系統見例:
APUE unix出錯處理
當unix函式出錯時 系統呼叫 常常會返回乙個負值,而且整型變數errno通常被設定為含有附加資訊的乙個值。檔案中定義了符合errno以及可以賦予它的各種常量,這些常量都以字元e開頭。另外,unix系統手冊第2部分的第1頁intro 2 列出了所有這些出錯常量。在linux中,出錯常量在errno ...
出錯處理函式
我們知道,系統函式呼叫不能保證每次都成功,必須進行出錯處理,這樣一方面可以保證程式邏輯正常,另一方面可以迅速得到故障資訊。出錯處理函式 include include char strerror int errnum see notes errnum 傳入引數,錯誤編號的值,一般取 errno 的值...
linux 出錯處理
當linux 系統出錯時候,常返回乙個負值記錄在變數errno中。對於errno的使用用兩條規則 1 如果沒有出錯,其值不會被清除 2 任一函式不會將errno置0 c標準有2個函式列印出錯日誌 include char strerror int errnum 此函式講errno 對映成乙個字串,返...