From: Austin S. <te...@of...> - 2003-06-18 18:21:43
|
On Wed, Jun 18, 2003 at 12:17:53PM -0400, Jason Penney wrote: > Hi, > > Could someone explain to me the difference, if any, between: > > $e->raw_pty(1); > > and > > $e->slave->stty('raw'); > > Sorry if I'm missing something obvious, but I don't really understand > from the doc. > raw_pty() causes IO::Tty::set_raw() to be called during spawn. stty() causes IO::stty::stty() to be called immediately. From IO::Tty::set_raw: <snip> $termios->setiflag(0); $termios->setoflag(0); $termios->setlflag(0); $termios->setcc(&POSIX::VMIN, 1); $termios->setcc(&POSIX::VTIME, 0); </snip> From IO::Stty: <snip> if($parameter eq 'raw' || $parameter eq '-cooked') { push (@parameters,'-ignbrk','-brkint','-ignpar','-parmrk','-inpck', '-istrip','-inlcr','-igncr','-icrnl','-ixon','-ixoff', '-opost','-isig','-icanon','min',1,'time',0 ); next; } <snip> It's difficult to tell if they do the same thing. For the IO::Stty part, it will only set or unset things defined by POSIX. For example, the only POSIX part of 'oflag' is 'opost'. There may be other undocumented flags that are set by 'setoflag(0)' that may operate differently on different operating systems - or not. I'm not sure if perl traps the part it doesn't recognize. The IO::Stty version is set as such because I followed what the Linux man page stty(1) claimed was 'raw' mode. I'm not sure why the IO::Tty version operates the way it does. In general use the avarage user would _probably_ not be able to tell the difference, but don't quote me on that. Austin |