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