5

プロセスグループに送信されたシグナルをトラップして、サブプロセスのいずれかがシグナルにヒットしないようにする方法はありますか?

私の問題は、SIGTERMで正常に終了するが、SIGUSR1で問題が発生するアプリがあるため、SIGUSR1から保護したいということです。簡単なbashスクリプトを書くことを考えました。

#!/bin/bash

runapp &
childspid=$!

trap "kill -TERM $childspid ; exit" USR1

while true ; do
    sleep 10 ;
done

残念ながら、キラーは狡猾で、リーダーだけでなくプロセスグループ全体にSIGUSR1を送信します。

どうもありがとう、

4

3 に答える 3

0

狡猾なキラーによって SIGUSR1 が送信されるのを防ぐためrunappに、モニターモードを使用して別のプロセスグループで実行できます。

#!/bin/bash
set -m
runapp&
trap "kill $!; exit" USR1
wait
于 2013-10-17T12:57:28.717 に答える
0

シグナルをキャッチしてアクションを実行しない SIGUSR1 シグナル用の独自のシグナルハンドラーを作成するだけです。

于 2013-02-08T04:43:59.913 に答える