マルチスレッドプログラムを使用しています。
まず、stdout を特定のファイルにリダイレクトします。そこに問題はありません(ファイルのファイル記述子はdup2(fd, 1)
どこにあるのかを使用しました)。fd
その後、stdout を端末に再度リダイレクトする必要があります。
私の最初のアプローチ:
/*Declaration*/
fpost_t stream_sdout;
/*code*/
if ( fgetpos( stdout, &stream_sdout) == -1 )
perror(Error:);
違法なシークと言っています。
なぜこれが起こっているのか分かりません。
しかし、これを機能させれば、使用するだけfsetpos(stdout, &stream_stdout)
で機能するはずです。
私の 2 番目のアイデアは、4 番目の位置にあるファイル記述子テーブルを使用して stdout をコピーすることdup2(stdout, 4)
でした。しかし、それも機能しません。
標準出力を元の宛先 (端末、パイプ、ファイルなど) に戻すにはどうすればよいですか?