1

たとえば、10 個のスレッドのプールがあり、これらのスレッドが別のプロセス (perl スクリプト) を開始する場合、それらのスレッドがそれらのスクリプトを「チェック」して、その実行状況を確認する方法はありますか?

スクリプトの一部がフリーズすることがありますが、それを知る方法はありません。そのため、スクリプトがハングアップしたときに通知を受け取ることができるように、スレッドがスクリプトをときどきチェックするようにする方法を考えていました。

4

2 に答える 2

4

たとえば、10 個のスレッドのプールがあり、これらのスレッドが出て別のプロセス (perl スクリプト) を開始する場合、それらのスレッドがそれらのスクリプトを「チェック」して、それらがどのように実行されているかを確認する方法はありますか?

私が知っている唯一の方法は、スクリプト自体が X 秒ごとに何らかのステータス メッセージを標準出力またはエラーに出力し、スクリプトを生成したスレッドがアクティブに読み取り、出力を待機している場合です。次に、プロセスに関するステータス情報を更新できます。

ProcessBuilderと を呼び出しstart()て を取得する場合は、 を にProcessアタッチしてスクリプトを監視できBufferedReaderますprocess.getOutputStream()process.exitValue()プロセスが終了したかどうかを確認するために呼び出すこともできますが、ハングしているかどうかはわかりません。

あるいは、スクリプトがソケットまたは他の IPC を介して何らかの方法で監視プロセスにコールバックすることもできますが、出力ストリームを監視するだけが最善の方法だと思います。

于 2013-06-25T13:33:41.540 に答える