On 2017-04-27 08:45:37 +0700, Robert Elz wrote: > ps: the seq command in your example cannot (properly) have caused the > SIGCHLD that you (think you) counted,
Well, I assume that this depends on the shell. But for most shells (if not all in practice), it is the seq command that causes the SIGCHLD. > as it is running in a sub-shell, and traps get reset there (and even > if they didn't, that would update a different copy of the counter > 'c') In most shells, the subshell is replaced by the seq command with just an execve, since it is the last command and there are no traps in the subshell. I suppose that this is not forbidden by POSIX, i.e. with the following example, getting the same value twice is not forbidden. #!/bin/sh echo `sh -c 'echo $PPID'; sh -c 'echo $$'` > You can see that background processes do generate SIGCHLD with a > script like... > > c=0 > trap 'c=$((c + 1))' CHLD > > while [ $c -lt 3 ]; do > echo $c > read junk > sleep 0.5 & > done OK, I confirm. -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)