1

我正在使用一些第三方库,它使用 stderr 打印错误并且它没有提供任何日志回调。我正在使用 linuxdaemon调用来创建进程的守护进程。

有没有办法可以在守护进程调用后将 stderr 设置为文件?

4

2 回答 2

4

使用open系统调用打开文件,然后执行以下操作:dup2(filefd, 2). 这将设置stderr为打开的文件。然后就可以了close(filefd)。你可以做openbefore call daemon,但我不推荐 the dup2and later closeuntil after after call daemon

于 2012-11-05T09:02:45.543 回答
2

在使用第三方库的代码中,您可以“重新路由”stderr 流。
例如:

std::ofstream outputFileStream;
outputFileStream.open ("outputfile.txt");

std::streambuf * yourStreamBuffer = outputFileStream.rdbuf();
std::cerr.rdbuf(yourStreamBuffer);

std::cerr << "Ends up in the file, not std::cerr!";

outputFileStream.close();
于 2012-11-05T09:12:08.230 回答