a.sh
1 2 3 4
| node ./writer.js > $pipe &
ps j $$
myPid=$$
ps j $(pgrep node -P "$myPid") |
1 2 3 4 5 6
| PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
2038 2605 2605 2038 pts/0 2605 S+ 1000 0:00 /bin/bash ./a.sh
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
2036 2038 2038 2038 pts/0 2605 Ss 1000 0:00 /bin/bash
2038 2605 2605 2038 pts/0 2605 S+ 1000 0:00 /bin/bash ./a.sh
2605 2607 2605 2038 pts/0 2605 S+ 1000 0:00 /bin/bash ./a.sh |
je présume que la derniere ligne, ca devrait etre /usr/bin/node, mais bon, j'approfondirai le bg plus tard.
La question était à qui ctrl+c est lancé.
ctrl+c map un INT signal,
ce INT signal tape le foregroundgroup, qui est contient a.sh
il est envoyé à tous les process de ce group
dans ce group, il y a également PID 2607 qui correspond à node, qui recoit donc également SIGINT
Il reste donc à comprendre ce que fait le shell quand on passe node en background (pourquoi ps j ne displaye pas le nom node mais /bin/bash ./a.sh)
Ils auront comme id de processus père le 1.
non cf ci-dessus
Partager