2
下面的代碼寫入兩個「A」和「B」的文件「out.txt」,與第一呼叫打開返回3和第二呼叫返回4.撤消標準輸出的重定向與DUP2
什麼我期望將「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;
}
那麼,你再次打開文件。你爲什麼期望它再次返回3?這是一個新的文件描述符。另外,您不關閉文件3(都不是4)。 – leemes