c-是否可以将perror()生成的消息发送到/var/log/syslog



我正在使用perror()打印错误消息,如:

pid = fork();
if (pid < 0) {
    perror("couldn't fork");
    exit(EXIT_FAILURE);
}

是否可以使用errno/perror()设施,但将生成的消息直接发送到系统日志(/var/log/syslog)?

我在程序的上下文中问这个问题,该程序可以在守护进程和非守护进程模式下运行。在守护程序模式下,perror()消息不会出现在系统日志上。

使用strerror根据错误代码获取错误消息,无需打印。然后像其他日志消息一样将其传递给syslog

syslog(LOG_ERR, "Couldn't fork: %s", strerror(errno));

最简单的方法是在调用程序时重定向stderr(可能还有stdout)。例如:./myprog 2>&1 | logger

假设您有写入syslog的正确权限,我不明白为什么您不能将输出管道传输到该文件。您也可以将fprintf与stderr一起使用,将错误结果输出到您创建的文件中。

最新更新