4

特定の数の並列ジョブ (別のスクリプト) を開始するスクリプト (ksh または perl) を作成する必要があります。それぞれのジョブは、別のセッションでフォアグラウンド プロセスとして実行されます。さらに、これらのスクリプトのいずれかがオペレーターからの入力を予期しているかどうかを判断する必要があるジョブの監視を開始し、必要に応じて対応するセッションに切り替えます。私の問題は、プロセスが入力を期待していることを判断する良い方法を見つけられなかったことです。バックグラウンド プロセスの場合は非常に簡単です。プロセスの状態は "停止" であり、これは 'ps' コマンドで簡単に確認できます。フォアグラウンド プロセスの場合、これは機能しません。これまでのところ、dbx または truss を使用してプロセスにアタッチして、「読み取り」でハングしているかどうかを確認しようとしましたが、このアプローチは重すぎるようです。より良い解決策を提案できますか?Perl、シェル、C、Java など

ありがとうございました。

4

1 に答える 1

3

あなたが求めていることは、少なくとも確実ではありません。プロセスはselect、呼び出しをブロックするのではなく、または他のポーリング方法を使用している可能性がありreadます。オペレーターの入力を待っているのか、他のことをしているのに忙しいのかはわかりません。一般的には、両方の可能性があります (オペレーターの入力に応答しながらバックグラウンドで何かを行っている)。

プログラムがオペレーターの入力を待っていることを知らせる通常の方法は、プロンプトを出力することです。したがって、最後に入力してからプロンプトが表示された場合、セッションはアクティブであると見なす必要があります。

プログラムがこのように動作しない場合は、これらのプロセスが入力を待っていることを知るために、他のプログラム固有の方法を見つける必要があります。

于 2013-07-02T18:13:13.443 に答える