Shell
如何重置文件描述符
我試圖使用文件描述符來列印文件中的行
#!/usr/bin/ksh exec 3<&0 exec 0< file.txt while read LINE do echo “$LINE” done
我完成了我的程式碼,它會按照我的意願列印輸出
我忘記將文件描述符重置為 0
exec 0<&3
會發生什麼 ?
- 描述符範圍將僅在程序或整個 unix shell 內持續存在?
- 我們如何知道哪個值持有哪個文件描述符(使用 shell 列印文件描述符的值)
- 它會自動重置系統(AIX)是否重新啟動?
文件描述符屬於一個程序:即目前程序。立即退出程序時,分配沒有任何效果。即使是繼承文件描述符的子shell(或任何子程序),也會從 fork() 呼叫它們自己的文件描述符副本(文件描述符只是一個指向 linux 核心中 IO 資源的數字)。就像打開文件一樣——在一個程序中打開一個文件並不會讓每個人都打開它,如果你自己不關閉它,linux 會在程序終止時關閉它並清理它。