2015-09-16 42 views
2

我使用klogctl(或syslog)通過重複獲取它們的輸出來收集內核日誌消息。內核日誌「文件描述符」用於select?

我想知道是否有可能獲得與內核日誌關聯的文件描述符,以便我可以使用select來觀看它(我已經在觀察與udev_monitor_get_fd關聯的其他udev監視器的文件描述符,它會方便使用select的一切)

回答

0

最好的辦法是配置rsyslogd將所有消息記錄到您選擇的fifo(mkfifo),然後您可以打開並選擇從中讀取。

+0

感謝您的貢獻。我最終發現了'/ dev/kmsg',並且由於應用程序可以在最近的內核上運行,所以它會爲我解決問題。 – mamahuhu

2

對於高於3.5的內核版本,/dev/kmsg包含所有內核日誌。 它打開如下:

int fk = open("/dev/kmsg", O_RDONLY | O_NONBLOCK);

只有從程序中的某些特定點獲取最新的內核信息可以通過尋求該文件的末尾,在這一點上:

lseek(fk, 0, SEEK_END);

然後fk被添加到文件描述符中設置常用的方式。