差分

移動先: 案内検索

プロセス管理

882 バイト追加, 2007年10月27日 (土) 16:27
/* プロセスを生成するシステムコール */
fork(2)とclone(2)ともに新しい子プロセスを生成しますが、fork(2)が内容をコピーするのに対しclone(2)は内容を共有しています。その意味では後に説明するスレッドと同じです。execve(2)で新しい内容を必要とした時に始めてコピーを行います。ですからvfork(2)はclone(2) の変形版といえます。ただしclone(2)はLinux独自のものなので、プログラムに使うと、他のシステムへの移植の際は問題が発生する可能性があります。
==== プロセスを殺すシステムコール ====
その反対にプロセスを殺すシステムコールはkill(2)です。コマンドkillは内部でkill(2)を呼んでいます。
$ kill -9 8321
killにプロセスIDを与えた場合、そのプロセス番号にSIGKILLを送ります。SIGKILLはプロセスを殺すシグナルです。killに与えるプロセスIDが0の場合、自分自身を殺します。-1は、シグナルを受け取ることができる全てのプロセスに送られます。プロセスinitはプロセスIDが1で、むかしは1を指定するとシステム全体が死んでいたのですが、今はルート権限でkill -9 1としても死なないようになっています。
 
;調べてみよう: killでマイナスの値を指定することができます。それはどのような役目をするのでしょうか?
=== スケジュリング ===
匿名利用者