TCPソケットを介してコマンドをピアプロセスに送信するCプログラムがあります。このコマンドを受信すると、ピア プロセスは要求されたコマンドの実行を開始します。しかし、時間がかかり、tcp ソケットが戻り値を長時間待機するのは望ましくありません。プロセスをフォークすると、これを行うのに役立つと思います。しかし、私はこれをうまく機能させるためにいくつかの他の方法が必要です。これに関連するあなたの考えや経験を共有してください。助けてください。前もって感謝します、
3 に答える
何を言っているのかはっきりしません。結果を知る前に答えを出したいと言うか、そうかもしれませんが、戻り値はプロセス自体に依存しません。トランザクション通信に関しては、「同期」トランザクションと「非同期」トランザクションの 2 つのアプローチがあります。前者はサーバーがプロセスを完了して結果を返すまで待機し、2 番目のサーバーはリクエストを送信してトークンを取得し、ソケットを閉じ、後でそのトークンを使用して結果をリクエストします。したがって、プロセスが終了したら応答を求めることができるトークンを、要求されたピアに与えることができます。「プロセスはまだ実行中です。後で試してください」という回答をする場合があることに注意してください。サーバーコードでは、このシナリオをプログラムし、各プロセスに番号を付け、その番号で結果を保持する必要があります。要求された場合、その番号で結果を送信します。これが適切でない場合は、達成しようとしていることをより詳細に説明してください。
スレッドを使用して、返信が来るまで待つことができます。pthread と wait は問題なく実行できます (ただし、スレッドは軽量プロセスです)。
プロセスを生成しないことで本当にこれを行いたい場合は、TCP 応答が受信されたときにコールバックのようなものに頼る必要があります。これは TCP ラッパー ライブラリから利用できる場合がありますが、このようなものを含めるか、そのようなものを作成する必要があります。たくさんの返信を待たなければ意味がありません。いくつかの応答待機スレッドは問題ありません。