~によるとPOSIX規格信号に関して(「標準信号」セクションを参照)、基本的な作業がありますSIGKILL
。SIGINT
学期。ただし、SIGSTOP
(または)を介して受信プロセスを停止した場合はそうではありませんSIGTSTP
。
単純化のために無限ループを持つプログラムを作成するとしましょう。
int main(){
while(1);
}
コンパイルして実行してみてください。
$ ./program
次にを押して停止CtrlZします。これにより、SIGTSTP
信号がプロセスに渡されます。これで、SIGINT
プロセスにシグナルを送信してkill -SIGINT pid
プロセステーブルを見ると、ps -aux
まだ終了していないことがわかります。しかし、送信するとkill -SIGKILL pid
終了します。
両方とも同じ基本操作(SIGINT
例:SIGKILL
学期)?
答え1
SIGKILL
デフォルトでは、プロセスは終了してブロックできませんが、デフォルトではプロセスSIGINT
は終了しますが、ブロックできます。 ()を使用してCtrlZプロセスをバックグラウンドに移動するため、SIGTSTP
信号はブロックされ、SIGINT
実行が再開されるまでプロセスに転送されません()。SIGCONT