raise
指定したシグナルを実行中のプロセスに送信します。
void raise(int)
raise
関数は、指定されたシグナルを現在実行中のプロセスに送信する、破壊的な関数です。この関数は、シグナルをプロセスに送信するkillコマンドの使用と類似しています。raise
関数を使用すると、プロセスの実行中に特定のポイントでシグナルを送信できます。
プロセス・シグナルの動作の詳細は、sigaction(2)
およびkill(1)
のマニュアル・ページを参照してください。
例7-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)