IO::Pty::HalfDuplex::JobControl - the default backend of IO::Pty::HalfDuplex


IO-Pty-HalfDuplex documentation  | view source Contained in the IO-Pty-HalfDuplex distribution.

Index


NAME

Top

IO::Pty::HalfDuplex::JobControl - the default backend of IO::Pty::HalfDuplex

SYNOPSIS

Top

    IO::Pty::HalfDuplex->new(backend => 'JobControl')

CAVEATS

Top

IO::Pty::HalfDuplex::JobControl is implemented using POSIX job control, and as such it requires foreground access to a controlling terminal. Programs which interfere with process hierarchies, such as strace -f, will break IO::Pty::HalfDuplex::JobControl.

Certain ioctls used by terminal-aware programs are treated as reads by POSIX job control. If this is done while the input buffer is empty, it may cause a spurious stop by IO::Pty::HalfDuplex::JobControl. Under normal circumstances this manifests as a need to transmit at least one character before the starting screen is displayed.

IO::Pty::HalfDuplex::JobControl relies on a forked-but-not-execed process to mediate job control, and as such any files open at spawn time will be closed until the slave is killed.

IO::Pty::HalfDuplex::JobControl sends many continue signals to the slave process. If the slave catches SIGCONT, you may see many spurious redraws. If possible, modify your child to handle SIGTSTP instead.

While this module will theoretically work on any POSIX.1 compliant operating system, in practice it exercises many dark corners and has required bug-workaround code everywhere it has been tested. It is known to work on Mac OS 10.5.7 and Linux 2.6.16. On FreeBSD 7.0 it passes tests but is extremely slow due to a kernel bug with no obvious workaround.

BUGS

Top

See IO::Pty::HalfDuplex.

COPYRIGHT AND LICENSE

Top


IO-Pty-HalfDuplex documentation  | view source Contained in the IO-Pty-HalfDuplex distribution.