シグナル送信
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/07 06:02 UTC 版)
「シグナル (Unix)」の記事における「シグナル送信」の解説
以下のような操作によりシグナルが送信される。 ユーザーがあるプロセスの端末のキーを押下したとき、端末がシグナルを発生する。CTRL+C(古いUNIXでは DEL キー)を押下すると、SIGINT を送信し、デフォルトではそのプロセスを終了させる。 CTRL+Z を押下すると、SIGTSTP を送信し、デフォルトではプロセスの実行を中断(一時停止)させる。 CTRL+\ を押下すると、SIGQUIT を送信し、デフォルトではプロセスを終了させコアダンプさせる。 (なお、これらのキーの組み合わせは stty(英語版) コマンドで変更可能である) kill(2) システムコールを使うと、権限があれば指定したプロセス(群)に指定したシグナルを送信できる。同様に kill(1) コマンドでユーザーがプロセス(群)にシグナルを送信することもできる。また、raise(3) を使えばカレントプロセス(またはスレッド)に指定したシグナルを送信できる。 ゼロ除算 (SIGFPE)、セグメンテーション違反 (SIGSEGV) などの例外によってもシグナルが発生する。経験の浅いプログラマはポインタに不正アドレスを入れてしまい、SIGSEGVを発生させることが多い。これらはデフォルトではプログラムを終了させ、コアダンプを生じる。 カーネルはプロセスに何らかのイベントを通知するためにシグナルを発生させることができる。例えば、プロセスがパイプに書き込んだとき読み込み側プロセスが既にパイプをクローズしている場合にSIGPIPEが送信される。この場合、デフォルトではそのプロセスは終了となるが、パイプをシェルが構築した場合、終了させるのが最も便利である。
※この「シグナル送信」の解説は、「シグナル (Unix)」の解説の一部です。
「シグナル送信」を含む「シグナル (Unix)」の記事については、「シグナル (Unix)」の概要を参照ください。
- シグナル送信のページへのリンク