答えて
最も使用されている機能の1つは、プロセス間のパイプストリームです.CLOEXECフラグが設定されている場合は実行できません(子プロセスはファイル記述子を継承できません。例:STDOUT_FILENO)。
また、execの後に継承されたファイル記述子を使用できないということはありません(例:標準ストリーム)。また、継承されたファイル記述子は、その値(整数)を知っている限り使用できます。この値は多くの場合、子プロセスに引数で渡されます(かなりのUNIXプログラムがそうしています)。または任意のIPC(プロセス間通信)メカニズムを使用してこれを行うことができます。
ファイル記述子は、exec
を呼び出して使用できます。これはUnixユーティリティがシェルから標準入力/出力/エラーfdsを取得する方法です。呼び出し元のプロセスイメージで開い
ファイル記述子は除いて、新しいプロセスイメージに開いたままにしなければならない。POSIX standard(とUnixの伝統は)反対の行動を義務付けているため
クローズ(close-on-exec)は、デフォルトではありませんclose-on-execフラグ
FD_CLOEXEC
が設定されている場合
私はこれに完全な答えを得ても構いませんが、下位互換性のために推測するのはかなり簡単です。いつのまにかエグゼクティブ・クローズ・フラグを導入しなければならなかった。それ以前に存在していたコードはそのことを知らず、変更されない限り正常に動作しませんでした。したがって、デフォルトではオフになっています。
残念なことに、これによりバグが発生し、デーモンプロセスがcgiをforkするとlistenソケットが開いたままになる可能性があり、cgiが終了したり閉じなかったりすると、デーモンを再起動できません。だから私はそれが本当に良いデフォルトではないことに同意します。
- 1. ウェブサイトがデフォルトでindex.htmlにデフォルト設定されていないのはなぜですか?
- 2. CookieSlidingExpirationがデフォルトでfalseに設定されているのはなぜですか?
- 3. SailsJSではデフォルトのミドルウェアの注文設定がデフォルトでコメントアウトされているのはなぜですか?
- 4. moqがデフォルトですべてのプロパティを設定しないのはなぜですか?
- 5. C++ 0x rvalueリファレンスがデフォルトでないのはなぜですか?
- 6. デフォルトのデフォルトのコンストラクタですが、なぜユーザが提供するデフォルトのコンストラクタではないのですか?
- 7. Zend-frameworkを設定できないのはなぜですか?
- 8. IntVarを設定できないのはなぜですか?
- 9. Dojo DateTextFieldを設定できないのはなぜですか?
- 10. なぜstd :: reference_wrapperはデフォルトでコンストラクタブルではないのですか?
- 11. なぜNSISはターゲットをデフォルトのINSTDIRに設定しますか?
- 12. QLabelのピックスマップを設定しないのはなぜですか?
- 13. iPhone Appに設定のデフォルト値が表示されないのはなぜですか?
- 14. なぜurl.ParseにURL.RawPathが設定されないのですか?
- 15. READ_COMMITTED_SNAPSHOTがデフォルトでオンになっていないのはなぜですか?
- 16. 設定フェーズで値が使用できないのはなぜですか?
- 17. なぜUILabelのテキストプロパティを設定できないのですか?
- 18. Byteが列挙のデフォルトのバッキングタイプではないのはなぜですか?
- 19. scrollTopの設定が正しい位置を設定できないのはなぜですか?
- 20. Combobox:SelectedValueでデフォルト値を設定すると、comboBox_SelectionChangedがnullになるのはなぜですか?
- 21. ブラウザで変数名がデフォルトで設定されているのはなぜですか?
- 22. テンプレートテンプレートパラメータをデフォルトにできないのはなぜですか?
- 23. 設定ファイルでlog4netが認識されないのはなぜですか?
- 24. 設定後もGitがコミットできないのはなぜですか?
- 25. Activitiプロジェクトで設定ファイルが作成されないのはなぜですか?
- 26. Interface Builderで「推測」設定が機能しないのはなぜですか?
- 27. gvimでフォント設定が機能しないのはなぜですか?
- 28. PHP SDKがFacebookセッションを設定できないのはなぜですか?
- 29. SET XACT_ABORTがデフォルトの動作ではないのはなぜですか?
- 30. Javaの変数がデフォルトで揮発性でないのはなぜですか?
入力/出力/エラーfds以外の使用例はありますか? –
フォークはexecではありません。 –
おっと、脳のおなら。さて、現代のシェルには任意のfdリダイレクションがサポートされていますが、それには理由があります。私はそれを自分で見つけたことはありませんでした。 –