3
下面是代碼:使用DUP2交換標準輸出與文件描述符,然後再返回
int main()
{
std::cout << "In stdout" << std::endl;
int stdoutBack = dup(1);
close(1);
int output = open("buffer.txt", O_RDWR|O_CREAT|O_APPEND, 0777);
dup2(output, 1);
std::cout << "In buffer" << std::endl;
dup2(output, stdoutBack);
close(output);
std::cout << "In stdout" << std::endl;
}
我想什麼發生的是「在標準輸出」被打印到標準輸出,「在緩衝區」打印到buffer.txt,然後「輸出stdout」再次打印到標準輸出。
實際發生在上面的代碼「以標準輸出」被打印到標準輸出什麼,「以緩衝液」被打印到buffer.txt」,但最後‘以標準輸出’消息是無處被發現。