2011-03-15 18 views

回答

0

您可以使用id = fcntl(blah,F_DUPFD,0)複製/克隆初始FD,然後使用dup2(0,id)將其複製回來(在關閉stdin!之後),然後使用fdopen()重新打開該文件。重複其他人。然而,這可能不會讓你得到你想要的東西 - 它會得到一個與FD 0相關的隨機文件句柄,而不會改變'stdin'。

另一種醜陋的選擇是產生一個線程(它隱式地dudin標準輸入/ etc),fdre打開它們,做你的處理,然後退出線程(關閉重新打開的stdin/etc)並解除阻塞主進程從未被改變)。這是間接的,但可能都是便攜式的,並且保證可以工作

0

因爲底層文件描述符已關閉,所以不能。但在Windows上,您可以嘗試打開與控制檯相對應的特殊文件「CON」。

相關問題