On August 27, 2017 6:28:12 PM GMT+02:00, Alessandro DE LAURENZIS 
<jus...@atlantide.t28.net> wrote:
>Folks,
>
>On Sat 12/08/2017 18:36, Alessandro DE LAURENZIS wrote:
>>Dear misc@ readers,
>>
>>I'm lost with the subject... From the man page I see that, differently
>
>>from standard ksh, OpenBSD implementation by default do *not* send 
>>SIGHUP signals to child processes when a SIGHUP is received by the 
>>parent shell and that this mechanism can be changed through:
>>
>>set +o nohup
>>
>>So far, so good; now:
>>
>>[....................snip....................]
>><open a new xterm>
>>$ sleep 30 &
>>[1] 46318
>>$ pgrep -fl sleep
>>46318 sleep 30
>><close the terminal and open a new one>
>>$ pgrep -fl sleep
>>46318 sleep 30
>>[....................snip....................]
>>
>>As expected, the sleep process is still there. But:
>>
>>[....................snip....................]
>><open a new xterm>
>>set +o nohup
>>$ sleep 30 &
>>[1] 83071
>>$ pgrep -fl sleep
>>83071 sleep 30
>><close the terminal and open a new one>
>>$ pgrep -fl sleep
>>83071 sleep 30
>>[....................snip....................]
>>
>>Even after having cleared the shell option, the process is not killed.
>>
>>Just in case, I also tried with:
>>
>>set -o nohup
>>
>>observing the same behavior.
>
>I've discussed this topic off-list with anton@, and the conclusion of 
>his analysis is that the "set +o nohup" correct behaviour requires a
>ksh 
>login shell.
>
>I confirm that, firing e.g. "ksh -l" from bash, child processes 
>correctly receive a SIGHUP at ksh's closing; instead, firing just "ksh"
>
>shows the unexpected behaviour I described above.
>
>Now, I doubt that signal handlers should be influenced by the
>login/non-login assumption, or at least that's not documented... I hope
>
>one of the developers will have a look.

From ksh(1):

"Note that for non-interactive shells, the trap handler cannot be changed for 
signals that were ignored when the shell started."

I bet this is what bites you.

/Alexander 

>
>All the best

Reply via email to