デフォルトハンドラだけのプロセスにシグナルを送信する
それでは、プロセスを1つ起動して、それにシグナルを送信する方法と、受信したプロセスの動作を確認しましょう。まずは、受信するプロセスのプログラムが独自のシグナルハンドラを登録していない場合からです。
シグナルを受信させるプロセスのプログラムコードを次に示します。何もせず、単に無限ループする(いつまでも終了しない)だけのプログラムです。独自のシグナルハンドラを登録していないため、どのシグナルを受信してもデフォルトのシグナルハンドラ(デフォルトハンドラ)が実行されます。
(▼viエディタでC言語プログラムmyApp-1.cを作成)
$ vi myApp-1.c
main(){ while(1) {}; }
(▼myApp-1.cをコンパイルして実行プログラム myApp-1 を作成)
$ make myApp-1
(▼myApp-1を実行。無限ループで終了しない)
$ ./myApp-1
killコマンド(試験での重要度:★★★)
killコマンドは、指定したシグナルを指定したプロセスに送信します。killコマンドの基本構文は次のとおりです。
kill [-s] [シグナル名 | シグナル番号] プロセスID kill [-s] [シグナル名 | シグナル番号] %ジョブID kill -l
| オプション | 説明 |
|---|---|
| -s | 送信するシグナルを指定。省略可能 |
| -l | シグナル名の一覧を表示 |
実行例1:シグナル一覧の表示
$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM ...(以下省略)...
実行例2:デフォルトハンドラが設定されたプロセスmyApp-1にSIGHUPシグナルを送信する(①~④は実行および表示の順番)
| 受信側 | 送信側 |
|---|---|
$ ./myApp-1 –① Hangup –④ |
$ pgrep myApp-1 –② 20082 $ kill -SIGHUP 20082 –③ |
実行例3:デフォルトハンドラが設定されたジョブ番号1のプロセスmyApp-1にSIGTERMシグナルを送信する
$ ./myApp-1 & [1] 20889 $ kill %1 [1]+ Terminated ./myApp-1
実行例4:プロセスmyApp-1にSIGKILLシグナルを送信する(①~④は実行および表示の順番)
| 受信側 | 送信側 |
|---|---|
$ ./myApp-1 --➀ Killed --④ |
$ pgrep myApp-1 --② 20082 $ kill -9 20082 --③ |
killallコマンド(試験での重要度:★★★)
killallコマンドは指定した名前のすべてのプロセスにシグナルを送信します。killallコマンドの基本構文は次のとおりです。
killall [-s] [シグナル名 | シグナル番号] プロセス名
実行例5:プロセスmyApp-1にSIGHUPシグナルを送信する
$ killall -s HUP myApp-1
pkillコマンド(試験での重要度:★★)
pkillコマンドは、killallコマンドと同じく指定した名前のすべてのプロセスにシグナルを送信します。ただし、killallコマンドとは構文が若干異なります。pkillコマンドの基本構文は次のとおりです。
pkill [--signal] [シグナル名 | シグナル番号] プロセス名
実行例6:プロセスmyApp-1にSIGINT(シグナル番号2)を送信する
$ pkill -2 myApp-1
この記事は参考になりましたか?
- ドラゴン大竹のLPICレベル1 弱点克服クラス(Ver 4対応)連載記事一覧
-
- 【LPICレベル1】弱点「シグナルによるプロセスの制御」を克服する
- 弱点「ディスプレイマネージャの種類・機能とログイン画面のカスタマイズ」を克服する
- 【LPICレベル1】弱点「systemdによるサービスとターゲットの制御」を克服する
- この記事の著者
-
大竹 龍史(有限会社ナレッジデザイン)(オオタケ リュウシ)
有限会社ナレッジデザイン 代表取締役。
1986年 伊藤忠データシステム(現・伊藤忠テクノソリューションズ(株))入社後、Sun Microsystems社のSunUNIX 3.x、SunOS 4.x、Solaris 2.xを皮切りにOSを中心としたサポートと社内トレーニングを担当。
1998年 (有)ナレッジデザイン設立。Linux、Solarisの講師および、LPI対応コースの開発/実施。約27年にわたり、OS の中核部分のコンポーネントを中心に、UNIX/Solaris、Linuxなどオペレーテ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です


