3

stdoutをファイルにリダイレクトするために、コードの最初に次のものがあります。stdout に送信された文字列をファイルにリダイレクトする代わりに、文字列をstdout とファイルの両方に送信したいと考えています。コード内からこれを行うにはどうすればよいですか?

int main(int argc, char** argv)
{
    int file = open("out.txt", O_APPEND | O_WRONLY);
    if(file < 0)    return 1;
    if(dup2(file,1) < 0)    return 1;
    ...
}

アップデート

私のコードは、stdout への書き込みに printf やその他の C 関数を使用していることに注意してください。

4

2 に答える 2

3

へのパイプを開きtee、それに書き込みます。

// be careful to quote the file argument properly!
FILE *fp = popen("tee out.txt", "w");

POSIXシステムのファイル記述子またはstdioレベルで必要な動作を取得することはできません。

于 2013-01-24T10:20:57.827 に答える
0

で動作させたい場合はprintf、2つの可能性しかありません。stdoutのみに出力し、teeユーティリティを使用してすべてを外部からファイルに書き込むか、ラッパーを作成して、ファイルへの書き込みと1回の2回printf呼び出します。 printfstdoutへの書き込み用(およびコードでstdoutに出力するために使用する他のすべてのc関数用)。dup/だけではやりたいことができませんdup2

于 2013-01-24T10:21:46.997 に答える