4

syslog我有一个用于记录的应用程序。此应用程序中的另一个库显式调用openlog()它自己的用法,在这种情况下会发生一些奇怪的事情:stderr 输出被发送到我已经打开的 tcp 套接字。当我将lib的输出日志更改为stderrstdout一切正常时。我想知道这是两个syslog连接的问题,还是只是代码中的某个地方搞砸了?

这是主应用程序的系统日志初始化:

openlog( "app", LOG_PID|LOG_NDELAY, LOG_LOCAL1 );

这是 lib 的 syslog 初始化:

openlog("lib", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
4

1 回答 1

1

它可能取决于实现。如果您使用MUSL libc,则代码在syslog.c中,您可以看到只有一个 fd 用于 syslog(因此两个openlog-s 共享相同的log_fd)。查看GNU libc源代码以了解在大多数 Linux 实现中发生了什么。您也可以使用straceltrace

于 2012-10-20T10:05:31.740 回答