【发布时间】:2013-01-24 11:15:01
【问题描述】:
以下代码将“A”和“B”都写入文件“out.txt”,第一次调用 open 返回 3,第二次调用返回 4。
我期望将“A”写入文件,将“B”写入屏幕。我还希望 open 在每种情况下都返回 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;
}
【问题讨论】:
-
好吧,你再打开文件。为什么你期望它再次返回 3?这是一个新的文件描述符。此外,您不会关闭文件 3(也不是 4)。
标签: c++