raise
指定したシグナルを実行中のプロセスに送信します。
void raise(int)
raise関数は、指定されたシグナルを実行中のプロセスに送信する破壊関数です。 この関数は、シグナルをプロセスに送信するkillコマンドの使用と類似しています。 raise関数を使用すると、プロセスの実行中に特定のポイントでシグナルを送信できます。
プロセス・シグナルの動作の詳細は、sigaction(2)およびkill(1)のマニュアル・ページを参照してください。
例8-37 実行中のプロセスを停止するためにraiseを使用する方法
プラグマを使用してスクリプトを開き、DTraceで破壊的関数を有効にします。 かわりに、この行を削除し、dtrace -wを使用してスクリプトを実行することもできます。 このスクリプトの述語は、指定された引数に対してプロセスIDを評価します。 この節には、プロセスを即時に停止するSIGINTシグナルを持つraise関数が含まれています。
#pragma D option destructive
syscall:::
/pid==$1/
{
raise(SIGINT);
exit(0)
}
このスクリプトを正しく機能させるには、停止するプロセスIDを指定する必要があります。 テスト実行の例を次に示します:
xclock & sudo dtrace -wn 'syscall::: /pid==$1/{ raise(SIGINT); exit(0) }' $(pidof xclock)