
No.3ベストアンサー
- 回答日時:
いわゆる unix には、「シグナル」というイベント通知の仕組みがあります。
あるプロセスに対して、シグナルが送信されると、そのプロセスは、やっている
処理を中断して、シグナルハンドラという特別に割り当てられた処理を行います。
kill コマンドというのは、このシグナルの送信をするコマンドに他なりません。
シグナルは、番号でイベントを区別でき、何種類もあり、それぞれの番号毎に
意味が割り当てられています。
シグナルハンドラは、自分で作って登録することもできますが、その登録を行わない
ときには、それぞれのシグナルに「デフォルトの動作」が割り当てられています。
デフォルトの動作は、無視・コア・終了・停止の4種類あります。
シグナルの中で9(SIGKILL)だけは、ちょっと特別で、シグナルハンドラの登録が
無視されます。なので、このシグナルを送信することで、対象のプロセスを無条件に
終了させることが保証されています。
これを簡単に言うと「強制終了」ですね。
他にも、デフォルトの動作が「終了」シグナルがあります(例えば、1や2)。
こいつらも送信すると対象のプロセスは終了するのですが、シグナルハンドラを
登録することができるので、そのプロセスの作り方によっては終了しないことが
ありえます。
> そもそもプロセスの『終了』と『強制終了』の違いとは何ですか?
普通にプロセスが終了する場合、というのは exit システムコールを呼んだのと
同じなんですが、シグナルのデフォルトの動作での「終了」も exit システムコール
を呼ぶのと同じです。
なので、実は違いがありません。
kill -KILL は、「『終了』を無条件に例外無く行う」と考えて下さい。
No.6
- 回答日時:
cherry_moon> #3 の補足になりますが、どんなシグナルがあるかは、
cherry_moon> signal.h、sys/signal.h を見れば分かります。
では、補足返しを :-)
あれでは、OS によっては、すんごく重たくなるので
> while(1){
> ;
> }
は、
pause();
としておいた方が良い、ということ。
もうひとつは、そのプログラムを動かしても SIGKILL だけは、my_handler() を
通らないことが、確認できますね、ということを付け加えておきます。
No.5
- 回答日時:
kill、kill -TERM、kill -15 といったコマンドは、
終了を表す「SIGTERM」というシグナルをプロセスに送ります。
プロセスがこのシグナルを受け取ると、ただ終了するのではなく、
プログラム内で指定された終了時の処理を行います。
(trapコマンドでこの処理は指定できます)
たとえば、一時ファイルを削除したり、処理した項目をログに書き込むと行った処理が考えられます。
このシグナルを無視するようにも指定できます。
もしこれでプロセスを終了させられない場合、
kill -kill、kill -9 などのコマンドを利用することになります。
これらは、強制終了を表す「SIGKILL」というシグナルをプロセスに送ります。
この場合、naturalさんの書かれているように、プロセス自身の処理ではなく、
外部から強制的に終了させられるので、
終了時の処理などをプログラム内で指定できないのです。
(つまり、予想外の結果を招きかねません。)
ちなみに、シグナルにはかなり種類があります。
bashなどでは、kill -l で確認できます。
No.4
- 回答日時:
#3 の補足になりますが、どんなシグナルがあるかは、
signal.h、sys/signal.h を見れば分かります。
下のプログラムを実行すると、どんなシグナルが入力されてるか見れます。
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void my_handler(int sig);
int main(int argc, char **argv)
{
int sig;
for(sig=0;sig<256;sig++){
signal(sig, &my_handler);
}
while(1){
;
}
return 0;
}
void my_handler(int sig)
{
printf("signal: %d\n", sig);
return;
}
No.2
- 回答日時:
終了とはプロセスに「終わってください」と言って、それに応答してプロセスが終わるものです。
だから、プログラムが暴走したりして話を聞いてないときは無駄でしょう。Windowsで暴走したプログラムの×を押しても何も起こらないのと同じです。強制終了の場合、シグナルという信号を投げます。シグナルには数種類あるのですが、この場合プログラムに割り込んで処理を中断、終了させます。Windowsの「・・・は応答していません。終了しますか?」のような画面に例えるとわかりやすいですね。ソフトウェアの動きに割り込んで強制終了させます。
No.1
- 回答日時:
プロセスの『終了』はプロセス自身の処理によって終了しますが、『強制終了』は外部からのシグナルによって強制終了命令を受け取ることによって終了させられるものです。
killコマンドには-9以外にもシグナルナンバーがあり、それぞれ送るシグナルによってプロセス側の反応も異なってきます。
killとはその名の通りプロセスを殺すことが代表的な役目ですが、実は様々なシグナルをプロセスに対して発行する役目を持っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 バッチファイルでのエクスプローラー終了 1 2022/05/30 14:32
- その他(コンピューター・テクノロジー) Ubuntu22.04ltsですが、たまにYou Tubeを聴いたり観たりしていると、無限ループでコ 2 2023/07/21 13:19
- その他(パソコン・スマホ・電化製品) スマホの動画の録画時間が1回で長いのと発熱による強制終了しにくいスマホ、または録音機を探してます。 2 2022/12/23 08:12
- Chrome(クローム) ブラウザーGoogle Chromeに関する質問 1 2023/07/07 11:22
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- iPhone(アイフォーン) 容量は半分以上あるのにアプリが強制終了する理由はなんですか? CPUがどのような状態なのでしょうか? 8 2023/08/27 00:50
- ノートパソコン 【緊急】 半年ぶりくらいに家のパソコン(Windows)を使おうとしたのですが、立ち上げてサインイン 5 2022/11/14 03:18
- その他(セキュリティ) これは故障でしょうか? PCを使っていたところ 急にこの画面になり 【終了】や【保存して終了】を押し 2 2023/07/17 11:16
- 英語 英語の相の種類 Wikipediaでは He began to talk.(起動相) He cont 1 2023/06/26 11:54
- Windows Vista・XP 電源ボタンでスリープするように設定の場合の強制終了方法 3 2022/06/21 14:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【画像あり】CPUがすぐに100...
-
デュアルCPU(デュアルコアでは...
-
"パイプが切断されました"の表...
-
二重起動チェックについて
-
プロセスやスレッドの管理はコ...
-
【プログラム】 iu14d2n.tmp ...
-
変なプロセスを終了したらブル...
-
強制終了できないプロセスの強...
-
Linux ログファイルの読み方を...
-
セーフモードコマンドプロント...
-
FTPによるファイル取得について
-
CPU使用率100%
-
タスクバーの音量アイコンをク...
-
アプリを終了しても、プロセス...
-
CPU使用率が高い
-
Applescript での文字表示
-
UNIXのファイルタイプp(...
-
EXCELのプロセスが残ってしまう
-
export PATH=xxxxとPATH=xxxxの...
-
プロセスの終了について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
タスクマネージャのCPU率がおか...
-
プロセス、サービス、デーモン...
-
System Idle Processってなに?...
-
タスクバーの音量アイコンをク...
-
アクロバットを終了しても、プ...
-
プロセスがタスクマネージャー...
-
CPU使用率が常に50~10...
-
Windowsで作れるスレッド最大数...
-
ネットワーク使用率約75%維持状...
-
タスクマネージャに表示されな...
-
ps コマンドのステータス。S Ss...
-
プロンプトが返らない
-
【プログラム】 iu14d2n.tmp ...
-
イラストレータでの透明部分の...
-
タスクマネージャで終了できな...
-
プロセスの終了について教えて...
-
CPU使用率取得方法について
-
強制終了できないプロセスの強...
-
linuxでプロセスが動いているCP...
おすすめ情報