stderrを使用してエラーを出力しているサードパーティのライブラリを使用していますが、ロギングのコールバックがありません。Linuxdaemon
呼び出しを使用して、プロセスのデーモンを作成しています。
デーモン呼び出し後にstderrをファイルに設定する方法はありますか?
システムコールを使用しopen
てファイルを開き、次の手順を実行しますdup2(filefd, 2)
。stderr
開いたファイルに設定されます。その後、できclose(filefd)
ます。open
を呼び出す前に行うことはできますが、を呼び出すまでは、以降daemon
はお勧めしません。dup2
close
daemon
サードパーティライブラリを使用するコードでは、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();