[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Making terminal available for TIOCSCTTY
On Thu, Jan 09, 2003 at 12:42 PM, Jan Hudec wrote:
>
> On Thu, Jan 09, 2003 at 12:29:45PM -0800, Ed Vance wrote:
> > Hi Jan,
> >
> > IIRC, a process must first have no controlling tty to get a
> > new one assigned on the next open of a tty. Controlling tty
> > assignments are sticky and are unaffected by closing. Once
> > assigned, the assignment persists even if the process
> > closes or redirects all streams open to that tty. For
> > example, a process still receives signals generated the
> > keyboard of its controlling tty, even if all streams have
> > been redirected. By default, a child process inherits the
> > parent's controlling tty assignment. So, the child process
> > must use the TIOCNOTTY ioctl on its controlling tty to
> > remove the controlling tty assignment. It does not matter
> > that a stream is already open to the previous controlling
> > tty. Then, the next open of a tty will assign that tty as
> > the new controlling tty, unless it is opened with the
> > O_NOCTTY flag or the tty is already the controlling tty of
> > another process, which it will be if there was a getty on it.
> >
> > I hope I got that right ...
>
> Thanks, this should help. The trick is, that I have a program
> that correctly claims controling tty, but I want to redirect
> it to a different tty. And a terminal can not be a controling
> terminal of more than one session. So I need something, that
> will keep the pty (terminal emulator) open, but not a
> controling terminal of anything.
Do you mean something like the following sequence?
process A has serial port as CTTY.
process A opens a master pseudo terminal.
process A forks child process B.
process B ioctl TIOCNOTTY serial port to remove B's CTTY assignment.
process B closes serial port streams.
process B opens corresponding slave pseudo terminal, becomes B's CTTY.
----------------------------------------------------------------
Ed Vance edv (at) macrolink (dot) com
Macrolink, Inc. 1500 N. Kellogg Dr Anaheim, CA 92807
----------------------------------------------------------------
>
> > -----Original Message-----
> > From: Jan Hudec [mailto:bulb@ucw.cz]
> > Sent: Thursday, January 09, 2003 11:33 AM
> > To: kernelnewbies@nl.linux.org
> > Subject: Re: Making terminal available for TIOCSCTTY
> >
> >
> > On Wed, Jan 08, 2003 at 01:50:45PM -0800, Seth Arnold wrote:
> > > On Tue, Jan 07, 2003 at 01:26:24PM +0100, Jan Hudec wrote:
> > > > Is it somehow possible to obtain a pty (not interested
> in usused virtual
> > > > console - only in different kinds of teminal emulators) so that
> > > > a process that has it's stdin, stdout and stderr
> redirected there can
> > > > claim it it's controling tty?
> > >
> > > Between the ioctl TIOCNOTTY and opening new terminal
> devices without
> > > using O_NOCTTY should re-associate your process with a
> new terminal.
> > > (Check open(2) for more hints.)
> >
> > I know how to make a pty my controling terminal. I however
> don't know
> > how to make a pty suitable for using as controling tty for
> a process,
> > whose parent has completely different controling tty.
> >
> >
> --------------------------------------------------------------
> -----------------
> Jan 'Bulb'
> Hudec <bulb@ucw.cz>
>
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
FAQ: http://kernelnewbies.org/faq/