2

別のプロセスBを開始するプロセスAがあります。
現在、プロセスBは、プロセス「A」によってシグナルが送信されるシグナル(WaitForSingleObject)を待機してから終了し、シグナルが設定されるとプロセスBが終了します。ただし、プロセスAが予期せず終了またはクラッシュすると、プロセスBが実行されたままになります。プロセスAがクラッシュした場合を除いて、Bに信号を無期限に待機させるにはどうすればよいですか?言い換えると、..プロセスBは、プロセスAが実行されるまでのみ存続する必要があります。ありがとう

4

4 に答える 4

1

WaitForSingleObjectプロセス A のプロセス ハンドル。Aが死ぬと合図します。

もう 1 つの方法は、デバッガーとして B を A にアタッチすることです。次に、プロセスが終了したときにイベントを取得し、完全に同期して終了できます。

于 2012-08-24T10:04:44.157 に答える
0

最も簡単な方法は、イベントではなくミューテックスを使用することです。プロセス A が終了すると、ミューテックスは放棄されたと見なされ、ミューテックスに対するプロセス B の待機は満たされます。

または、B にプロセス A へのハンドルを与え、イベントとプロセス A へのハンドルの両方を待機させることもできます。この方法を使用する場合、B が A へのハンドルを取得する最善の方法は継承です。プロセス A で DuplicateHandle (bInheritHandle を TRUE に設定) を使用して、GetCurrentProcess によって返された疑似ハンドルを実際のハンドルに変換します。コマンドラインまたは環境変数で、ハンドルの値をプロセス B に渡します。

于 2012-08-25T01:55:43.960 に答える
0

を起動するときBに、A の pid を渡しBますA。これが成り立たなくなったら、終了します。

于 2012-08-24T10:01:12.533 に答える
0

2 つのプロセス間でハートビート メッセージを送信する tcp ソケットを持つこともでき、A と B が異なるマシン上にある場所に拡張することもできます。

于 2012-08-24T10:30:46.433 に答える