使用freopen將標準輸入和輸出重定向到某些文件後,我怎樣才能將它們重定向回到它們最初的位置?將標準流重定向回控制檯和C++中的鍵盤
0
A
回答
0
您可以使用id = fcntl(blah,F_DUPFD,0)
複製/克隆初始FD,然後使用dup2(0,id)
將其複製回來(在關閉stdin!之後),然後使用fdopen()重新打開該文件。重複其他人。然而,這可能不會讓你得到你想要的東西 - 它會得到一個與FD 0相關的隨機文件句柄,而不會改變'stdin'。
另一種醜陋的選擇是產生一個線程(它隱式地dudin標準輸入/ etc),fdre打開它們,做你的處理,然後退出線程(關閉重新打開的stdin/etc)並解除阻塞主進程從未被改變)。這是間接的,但可能都是便攜式的,並且保證可以工作
0
因爲底層文件描述符已關閉,所以不能。但在Windows上,您可以嘗試打開與控制檯相對應的特殊文件「CON」。
相關問題
- 1. 獲取控制檯中的鼠標和鍵盤輸入C++
- 2. C#如何將流重定向到控制檯Out?
- 3. 重定向標準流
- 4. iPhone SDK:STDERR重定向/標準輸出到的XCode控制檯
- 5. 重定向控制檯應用程序的標準輸入
- 6. 控制檯鍵盤按檢測lib或標準選項?
- 7. 將父進程的控制檯(標準輸出,標準錯誤等)輸出重定向到子進程(反向)
- 8. 將錯誤流重定向到Windows中的文件和控制檯
- 9. 將System.setout重定向回標準輸出
- 10. C++控制檯鍵盤事件
- 11. 重定向標準流在Java中
- 12. 將subprocess.Popen stderr重定向到控制檯
- 13. 將輸出重定向到控制檯
- 14. StartupinfoEX和控制檯重定向
- 15. 將stderr重定向到C中的文件和標準輸出
- 16. 將標準輸出重定向到文件+ ANT +控制檯上沒有輸出
- 17. 將C++控制檯輸出重定向到C#
- 18. 將printf C++控制檯輸出重定向到C#
- 19. 重定向非標準流(的Process.Start)
- 20. 切換回標準鍵盤的UITextField定製InputView(MonoTouch的)
- 21. 將鍵盤輸入重定向到.net中的子控件
- 22. 只重定向stderr,保持標準輸出指向控制檯使用System.Diagnostics.Process
- 23. c#控制檯應用程序重複鍵盤按?
- 24. 重定向標準輸出流
- 25. 將Python標準輸入流更改爲Windows控制檯輸入
- 26. 「標準流」和「控制檯」有什麼區別?
- 27. 將鍵盤活動重定向到特定控件
- 28. 標準控制檯輸入
- 29. 如何將Octave的控制檯輸出重定向到單獨的控制檯?
- 30. 在控制檯中使用自定義鍵盤快捷鍵