killは、プロセスにシグナルを送る。
名前からして、プロセスを終了させるシステムコールに感じそうだが、必ずしもそうではない。
あくまで、シグナルを送るのであって、送るシグナルがプロセス終了の場合が多いだけ。
forkをして、親プロセスも子プロセスも1秒ごとに出力するのだが、親プロセスはiが5の時、killでSIGKILLを送信する。
$ vi kill.c $ gcc kill.c -o kill $ ./kill pid = 4204 I am parent, pid = 4204, child = 4205 I am child, child = 4205 I am parent, pid = 4204, child = 4205 I am child, child = 4205 I am parent, pid = 4204, child = 4205 I am child, child = 4205 I am parent, pid = 4204, child = 4205 I am child, child = 4205 I am parent, pid = 4204, child = 4205 I am child, child = 4205 kill child = 4205 success! I am parent, pid = 4204, child = 4205 I am parent, pid = 4204, child = 4205 I am parent, pid = 4204, child = 4205 I am parent, pid = 4204, child = 4205 I am parent, pid = 4204, child = 4205 $
子プロセスは5回出力後に消えてしまう。
Sample/unixsyscall/kill/kill/src/kill at master · bg1bgst333/Sample · GitHub