1

stderrを使用してエラーを出力しているサードパーティのライブラリを使用していますが、ロギングのコールバックがありません。Linuxdaemon呼び出しを使用して、プロセスのデーモンを作成しています。

デーモン呼び出し後にstderrをファイルに設定する方法はありますか?

4

2 に答える 2

4

システムコールを使用しopenてファイルを開き、次の手順を実行しますdup2(filefd, 2)stderr開いたファイルに設定されます。その後、できclose(filefd)ます。openを呼び出す前に行うことはできますが、を呼び出すまでは、以降daemonはお勧めしません。dup2closedaemon

于 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 に答える