syslog_r для Linux?

Ребята, я не могу найти повторно используемую версию syslog() для Linux... есть ли она? А если нет, то что вы делаете? Очевидный ответ — перенести средство ведения журнала в отдельный поток и сериализовать доступ к системному журналу...


person pachanga    schedule 22.07.2009    source источник
comment
Является ли защита вызова системного журнала с помощью семафора/мьютекса менее очевидной? Люди смогут лучше помочь вам, если вы подробно объясните, что вы хотите сделать, и почему решение, которое вы сами предлагаете, неприемлемо.   -  person Michiel Buddingh    schedule 22.07.2009


Ответы (1)


Согласно спецификации POSIX, функция системного журнала уже является многопоточной. безопасным, и поэтому реализованным в Linux. Так что syslog_r не нужен — используйте syslog, если вам нужна функция реентерабельного логгера.

person Martin v. Löwis    schedule 22.07.2009
comment
Однако BSD определяют вызов syslog_r по совершенно другой причине; отдельные потоки могут захотеть вести журнал с разными параметрами системного журнала, что в противном случае невозможно. - person Michiel Buddingh; 22.07.2009
comment
Правильно - эта функция недоступна в Linux. - person Martin v. Löwis; 22.07.2009
comment
эта страница говорит, что она не является потокобезопасной - person BЈовић; 04.09.2013
comment
Это все еще так с syslog? Я не могу найти упоминания о безопасности потоков или реентерабельном поведении в спецификации POSIX. - person Michael Foukarakis; 19.06.2014
comment
Документы Glibc теперь отмечают свойства безопасности и говорят, что системный журнал является потокобезопасным: ="nofollow noreferrer">gnu.org/software/libc/manual/html_node/ - person P.T.; 01.04.2015