2009-07-22 3 views
11

여러분, 리눅스 용 syslog() re-entrant 버전을 찾을 수 없습니다 ... 거기 있습니까? 그리고 만약 아니라면, 당신은 무엇입니까? 분명한 대답은 로깅 기능을 별도의 스레드로 옮기고 syslog에 일련 번호로 액세스하는 것입니다.Linux 용 syslog_r?

+0

세마포어/뮤텍스를 사용하여 syslog 호출을 지키지 않는 것이 확실하지 않습니까? 자신이 원하는 것을 상세히 설명하고 자신이 제안한 해결책이 왜 받아 들일 수 없는지 사람들은 더 잘 도와 줄 수 있습니다. –

답변

17

POSIX specification에 따르면 syslog 함수는 이미 스레드로부터 안전하므로 Linux에서 구현됩니다. 따라서 syslog_r은 불필요합니다. 재진입 로거 기능이 필요한 경우 syslog를 사용하십시오.

+5

그러나 BSD는 완전히 다른 이유로 syslog_r 호출을 정의합니다. 개별 스레드는 다른 syslog 옵션으로 로그하려고 할 수 있습니다. 그렇지 않으면 불가능합니다. –

+0

오른쪽 -이 기능은 Linux에서 사용할 수 없습니다. –

+0

[이 페이지] (http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.basetechref%2Fdoc%2Fbasetrf2%2Fsyslog.htm)는 다음과 같이 말합니다. 스레드가 안전하지 않다. –