4

作成しているプログラムで文字列を使用する必要があるため、stderrをC文字列にリダイレクトできるようにしたいと思います。最初に(ハードドライブ上の)ファイルに書き込んでから、ファイルを読み取って文字列を取得することは避けたいと思います。これを行うための最良の方法は何ですか?

4

3 に答える 3

14

setbuf()stderrを使用してのバッファを変更できます。

#include <stdio.h>

int main(void)
{
    char buf[BUFSIZ];
    setbuf(stderr, buf);
    fprintf(stderr, "Hello, world!\n");
    printf("%s", buf);
    return 0;
}

プリント:

Hello, world! 
Hello, world!

注: ストリームに対する操作の前に、バッファを変更する必要があります。

于 2013-02-05T20:01:26.403 に答える
2
  1. stderr を stdout にリダイレクトし、C プログラムにパイプします。stdoutではなく、stderrをパイプする方法を参照してください。
  2. もちろん、C プログラムの標準入力から読み取ります。

これは、stderr が別のプログラムから来ていることを前提としています。プログラムとプロセスからのすべての stderr 出力をキャプチャする場合は、別のスレッドで を介して stderr への書き込みをリッスンしますfopen("/dev/stderr", "r")

于 2013-02-05T19:39:38.997 に答える