> Hello,
> 
> I'm having a trouble programming a special login shell, and would like
> to hear any opinions on this.
> 
> I want this shell (which automatically becomes a session leader) to
> release its ctty but remain unterminated (the ctty must be taken by its
> child).  However, there seems to be no easy way to do this; termios(4)
> says one must call setsid() to release its ctty, but setsid(2) says the
> call will fail if the caller is already a session leader.
> 
> Would there be any other way for a session leader to release its ctty
> without terminating itself?  TIA.

You need to also drop your process id so that you're not the owner of 
the process group that the terminal points at.  Check bundle_setsid() 
in src/usr.sbin/ppp/bundle.c.  A second fork() is done here because 
the parent may continue and doesn't want to figure out how to reap 
the child - you probably don't need this if the original process is 
going to go away soon anyway.

> Cheers,
> Eugene Kim
> 
> PS. I'm now using a workaround that the shell will forward the SIGHUP
> that it received because it's a session leader, but this isn't a clean
> way. :-p
> 
> -- 
> Eugene M. Kim                 NTT Multimedia Communications Laboratories
> Software Developer                       250 Cambridge Avenue, Suite 205
> +1 650 833 3630 (Voice)                         Palo Alto, CA 94040, USA
> +1 650 833 3633 (Fax)                             mailto:g...@nttmcl.com

-- 
Brian <br...@awfulhak.org>                        <br...@freebsd.org>
      <http://www.Awfulhak.org>                   <br...@openbsd.org>
Don't _EVER_ lose your sense of humour !          <br...@uk.freebsd.org>




To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to