kill

killは、プロセスにシグナルを送る。

Man page of 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