0

私は分岐を使用するのが初めてで、目的を達成する方法を理解するのに苦労しています。できる限り説明しようと思います。

Linux 上で動作する機能的なバークレー ソケット サーバーであるプロセス A があります。

バックグラウンド状態で、プログラムをディスクから別の非ブロック プロセス (プロセス B) にロードするには、プロセス A が必要です。次に、プロセス A は、プロセス A のソケットのプロセス B 制御を渡す必要があります。最後に、プロセス A を終了し、プロセス B を実行したままにする必要があります。

古いプロセスが終了した場合にソケットを新しいプロセスに渡すために必要なものと、元のプロセスを終了できる非ブロックの新しいプロセスを作成する最良の方法については不明です。

4

2 に答える 2

3

あなたがする必要がある特別なことは何もありません。プロセス B に継承させたいファイル記述子のclose on execフラグがクリアされ、プロセス B に継承させたくないファイル記述子に設定されていることを確認してください。exec次に、プロセス A をプロセス B に置き換えるために呼び出します。プロセス B は、すべての継承可能なファイル記述子をそのままにして開始します。

于 2013-01-04T22:57:34.393 に答える
0

inheritance-through-fork を使用せずに開いているファイル (ソケットなど) を渡す必要がある場合は、with を使用ioctlI_SENDFDます。ここに非常に詳細な説明があります。(それを受信するための対応するメカニズムがあります。) これは、プロセスを接続する名前付きパイプを使用するか、バリエーションを介して Unix ドメイン ソケットで行うことができます。

于 2013-01-04T23:00:55.613 に答える