C プログラムの stderr と stdout の出力を 2 つのファイルにリダイレクトしてから、元の stdout と stderr を復元しています。
int sout = dup(fileno(stdout));
freopen("test.txt","w",stdout);
int serr = dup(fileno(stderr));
freopen("test.txt","a",stderr);
//some output....
dup2(sout,fileno(stdout));
close(sout);
dup2(serr,fileno(stderr));
close(serr);
それがコード例です。これは機能します。
しかし、stdout と stderr を同じファイルにリダイレクトして (後で再度復元し)、stderr と stdout をリダイレクトしない場合にコンソール出力でソートされるのと同じ順序で出力がソートされるようにしたいと考えています。どうやってやるの?