參考博客:https://blog.csdn.net/qq_26093511/article/details/53255970
參考博客:https://blog.csdn.net/db199410/article/details/52335450#commentBox
1.要解決的問題
? ? ? ? ? 通過復制文件描述符來實現文件重定向問題。
2.實現代碼
? ? ? ??
2.代碼輸出
? ? ? ? ?按照原來的想法,運行程序之后應該會在屏幕終端顯示字符數組中的數據,但是實際上卻什么都沒有顯示;
3.錯誤原因
? ? ? ? 沒有正確理解緩存區的概念。
? ? ? ? 緩存區詳細介紹參考博客:https://blog.csdn.net/db199410/article/details/52335450#commentBox
? ? ? ? 我自己總結的觀點:在重定向的過程中,write()系統調用將數據寫入STDOUT緩存區,如果不使用換行符或者緩存區滿的時候,緩存區中的數據是不會打印到屏幕終端的。
4:解決方法
? ? ? ? 在字符串數組后面加上一個\n刷新緩存區即可在屏幕上得到字符數組的值。
5.存在的問題
? ? ? ? 如果數據在緩存區,那么使用fflush和正常關閉文件,也能夠刷新緩存區,讓數據打印到屏幕終端,實際上卻沒有?求解決?(加fflush的代碼:在close(fd)前面加一句fflush(stdout))
? ? ? ? 求看到問題的小伙伴,如果看到能夠解決,請給出你寶貴的意見,謝謝!