親プロセスから呼び出されたらすぐに子プロセスをプログラムで終了する方法は?

親プロセスから呼び出されたらすぐに子プロセスをプログラムで終了する方法は?

アプリケーション内で開始されたプロセスをプログラムで終了するには?明らかに、時々WebKitサブプロセスを開始するアプリケーションがあり、このサブプロセスが開始された直後(つまり、すぐにではなく約3秒)でこのサブプロセスを終了したいと思います。

私が今やっていることは、WebKitの出力をgrepしてps auxから、PIDを使用してすべてのプロセスバイナリを終了または終了することです。これは自動化できるはずです。たとえば、サブプロセスが5分ごとに起動することがわかっている場合は、そのサブプロセスの新しいインスタンスを確認し、プログラムで終了するためにバックグラウンドで実行し続けるためにどのツールを使用できますか? (ところでpkill私はpgrep書けません。)

ベストアンサー1

秘密は、正しいプロセスを終了し、必要なプロセスのみを終了することを確認することです。簡単に見えますが、多くの人がこれを混同しています。プログラムでこれを行う最も悪い方法は、名前を使用して行うことです。

さて、両親を変更できないと言われました。可能であれば、正しい方法は子PIDがあるため、fork()呼び出しの戻り値を取得することです。 PIDは一意ですが、名前(ps aux | grepを使用して行う操作のようです)は一意ではありません。

親プロセスのPIDを知っていると仮定すると、pgrep -Pがこれを達成する方法かもしれません。これは親プロセスのすべての子プロセスと一致するため、子プロセスがあると仮定します。

奇妙なことに、killallはageと一致し、pgrep / pkillは親と一致しますが、他の側が行うことはしません。いつかこの問題を解決することができます。

おすすめ記事