我正在寫一個函數,它給出參數將重定向標準輸出到文件或從文件讀取標準輸入。爲此,我關閉與stdout或stdin關聯的文件描述符,這樣當我打開文件時,它會在我剛剛關閉的描述符下打開。這有效,但問題是,一旦完成,我需要恢復stdout和stdin到他們真正應該做的。關閉它們後重新打開標準輸出和標準輸入文件描述符
我可以爲標準輸出做什麼打開(「/ dev/tty」,O_WRONLY);但我不確定爲什麼這會起作用,更重要的是我不知道stdin的等價語句。
所以我有,標準輸出
close(1);
if (creat(filePath, O_RDWR) == -1)
{
exit(1);
}
和標準輸入
close(0);
if (open(filePath, O_RDONLY) == -1)
{
exit(1);
}
man'dup'和'dup2' – 2012-01-31 17:35:26
'O_RDWR'用於'open'' flags'參數,不適用於'creat'' mode'參數。 – 2016-03-21 12:22:48