SIGHUP on pty closure

Marco atzeri marco.atzeri@gmail.com
Thu Jul 21 21:43:00 GMT 2011


looking on the mc subshell issue, I found that mc
suppose that the subshell will receive a SIGHUP
when mc exit and close the master side of pty.

Is such assumption wrong or it is a missing piece of
cygwin pty implementation ?



------------- extract from subshell.c --------------
     /* Attach all our standard file descriptors to the pty */

     /* This is done just before the fork, because stderr must still      */
     /* be connected to the real tty during the above error messages; */
     /* otherwise the user will never see them.                   */

     dup2 (subshell_pty_slave, STDIN_FILENO);
     dup2 (subshell_pty_slave, STDOUT_FILENO);
     dup2 (subshell_pty_slave, STDERR_FILENO);

     close (subshell_pipe[READ]);
     close (subshell_pty_slave); /* These may be FD_CLOEXEC, but just in 
case... */
     /* Close master side of pty.  This is important; apart from */
     /* freeing up the descriptor for use in the subshell, it also       */
     /* means that when MC exits, the subshell will get a SIGHUP and     */
     /* exit too, because there will be no more descriptors pointing     */
     /* at the master side of the pty and so it will disappear.  */
     close (subshell_pty);

     /* Execute the subshell at last */

     switch (subshell_type)
     {
     case BASH:
         execl (shell, "bash", "-rcfile", init_file, (char *) NULL);
         break;
----------------------------------------------------------

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list