LinuxはBashスクリプトの中でファイル記述子の実例をどうやって閉じますか?
LinuxはBashスクリプトの中でファイル記述子の実例をどうやって閉じますか?
Bashスクリプトを書く時に問題が発生しました。このスクリプトはプログラムBを起動するためのものです。このスクリプトは他のプログラムAによって呼び出されました。その結果、新しく起動したBプロセスには多くのAプロセスが開いているファイル記述子(Socketなど)があります。そのため、スクリプトの中でそれらを閉じることにしました。簡単のために、Aプログラムでsystem()を使ってスクリプトを起動しました。
ファイルのディスクリプタを閉じるスクリプトを追加しました。
疑問があれば、メッセージをお願いします。あるいは、当駅のコミュニティで交流して討論してください。ありがとうございます。
Bashスクリプトを書く時に問題が発生しました。このスクリプトはプログラムBを起動するためのものです。このスクリプトは他のプログラムAによって呼び出されました。その結果、新しく起動したBプロセスには多くのAプロセスが開いているファイル記述子(Socketなど)があります。そのため、スクリプトの中でそれらを閉じることにしました。簡単のために、Aプログラムでsystem()を使ってスクリプトを起動しました。
ファイルのディスクリプタを閉じるスクリプトを追加しました。
#!/bin/sh
cd $(dirname "$0") || exit 1
exec 3>&-
exec 4>&-
./rbtunnel "$@" &
#sleep 1
ここのポイントはファイルの説明を閉じるコードです。exec fd>& はい、exec fd<&- fdはファイル記述子の数字であり、ファイル記述子はLinuxでlsof-c rbtunnelで見られます。疑問があれば、メッセージをお願いします。あるいは、当駅のコミュニティで交流して討論してください。ありがとうございます。