stdout をファイルにリダイレクトするコード (ls の結果がファイルに返されるなど) を書いていますが、dup2() 関数は出力をリダイレクトしません。これが私が持っているコードです:
void testDup()
{
int newft;
if(newfd = creat("fout.txt", O_TRUNC|O_WRONLY) == -1)
{
cout << "Open failed"<< endl;
exit(1);
}
dup2(newfd, 1);
cout << "this should be in the new file" < endl;
}
そして、これは機能しません。ls の出力を端末ウィンドウに表示するだけです。dup2() が実際に -1 ではなく 1 を返したことを確認するための手順を実行しました。