Linux 在Bash腳本中怎么關(guān)閉文件描述符的實(shí)例
在寫一個(gè)Bash腳本的時(shí)候碰到一個(gè)問(wèn)題,這個(gè)腳本是用來(lái)啟動(dòng)一個(gè)程序B的,而這個(gè)腳本又被另一個(gè)程序A調(diào)用,結(jié)果發(fā)現(xiàn)新啟動(dòng)的B進(jìn)程中有很多A進(jìn) 程打開的文件描述符(如Socket)。因此決定在腳本中將它們關(guān)閉,因?yàn)闉榱撕?jiǎn)單起見,我在A程序中使用了system()來(lái)啟動(dòng)該腳本。
增加了關(guān)閉文 件描述符的腳本如下:
#!/bin/sh
cd $(dirname "$0") || exit 1
exec 3>-
exec 4>-
./rbtunnel "$@"
#sleep 1
這里的關(guān)鍵點(diǎn)就是關(guān)閉文件描述的代碼:exec fd>- 也可以是:exec fd- 其中fd為文件描述符的數(shù)字,而文件描述符在Linux下可以通過(guò)lsof -c rbtunnel來(lái)查看。
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
您可能感興趣的文章:- linux下文件描述符限制問(wèn)題
- Bash中文件描述符的詳細(xì)介紹
- Linux中文件描述符fd與文件指針FILE*互相轉(zhuǎn)換實(shí)例解析
- linux中通過(guò)文件描述符獲取文件絕對(duì)路徑的方法
- 詳解Android文件描述符