次のコードは、ファイル「out.txt」に「A」と「B」の両方を書き込んでおり、openの最初の呼び出しは3を返し、2番目の呼び出しは4を返します。
私が期待したのは、「A」がファイルに書き込まれ、「B」が画面に書き込まれることです。また、いずれの場合もオープンで3を返すことを期待していました。
以下のコードを修正するにはどうすればよいですか?
int main(int argc, char** argv)
{
int file = open("out.txt", O_APPEND | O_WRONLY);
if(file != 3) return 1;
if(dup2(file,1) < 0) return 1;
std::cout << "A" << std::endl;
if(dup2(1,file) < 0) return 1;
std::cout << "B" << std::endl;
file = open("out.txt", O_APPEND | O_WRONLY);
if(file != 3) return 1;
return 0;
}