Mercurial > hg
changeset 29609:591c3badff2e stable
commandserver: update comment about setpgid
Now setpgid has 2 main purposes: better handling for terminal-generated
SIGTSTP, SIGINT, and process-exit-generated SIGHUP. Update the comment to
explain things more clearly.
author | Jun Wu <quark@fb.com> |
---|---|
date | Mon, 18 Jul 2016 15:59:08 +0100 |
parents | 681fe090d82e |
children | 754f63671229 |
files | mercurial/commandserver.py |
diffstat | 1 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commandserver.py Sun Jul 17 22:55:47 2016 +0100 +++ b/mercurial/commandserver.py Mon Jul 18 15:59:08 2016 +0100 @@ -343,9 +343,17 @@ _restoreio(ui, fin, fout) def _initworkerprocess(): - # use a different process group from the master process, making this - # process pass kernel "is_current_pgrp_orphaned" check so signals like - # SIGTSTP, SIGTTIN, SIGTTOU are not ignored. + # use a different process group from the master process, in order to: + # 1. make the current process group no longer "orphaned" (because the + # parent of this process is in a different process group while + # remains in a same session) + # according to POSIX 2.2.2.52, orphaned process group will ignore + # terminal-generated stop signals like SIGTSTP (Ctrl+Z), which will + # cause trouble for things like ncurses. + # 2. the client can use kill(-pgid, sig) to simulate terminal-generated + # SIGINT (Ctrl+C) and process-exit-generated SIGHUP. our child + # processes like ssh will be killed properly, without affecting + # unrelated processes. os.setpgid(0, 0) # change random state otherwise forked request handlers would have a # same state inherited from parent.