web-dev-qa-db-ja.com

勘当されたプロセスはSIGHUP以外のシグナルを受信しますか?

  • シェルがシグナルをそのジョブにのみ送信できるが、そのジョブではないプロセスにシグナルを送信できないというのは正しいですか?

  • disownは、シェルのジョブリストからジョブを移動します。それは、所有されていないプロセスがその親シェルからすべてのシグナル(SIGHUPだけでなく)を受信しないことを意味しますか?それでも他の信号を受信する場合は、なぜそうですか?

1
Tim

自分が所有する任意のプロセスにいつでもシグナルを送信できます。シェルはおそらくそれ自体では機能しません。

3
vonbrand

テストが簡単:

sleepはSIGUSR1を受信すると死にます:

$ sleep 999 &
[1] 7399
$ kill -USR1 7399
$
[1]+  User defined signal 1   sleep 999

それで、それを否認して、それが生き残るかどうか見てみましょう:

$ sleep 999 &
[1] 7396
$ disown %1
$ jobs
$ ps -fp 7396
UID        PID  PPID  C STIME TTY          TIME CMD
schaller  7396  7360  0 19:59 pts/0    00:00:00 sleep 999
$ kill -USR1 7396
$ ps -fp 7396
UID        PID  PPID  C STIME TTY          TIME CMD
$
1
Jeff Schaller