守護程序的出錯處理

2021-05-22 17:39:45 字數 2182 閱讀 5856

守護程序的出錯處理

由於守護程序完全脫離了控制終端,因此,不能像其他程式一樣通過輸出錯誤資訊到控制台的方式來通知程式設計師。

通常的辦法是使用

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 對映成乙個字串,返...