The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

POSIX::1003::Termios - POSIX general terminal interface

INHERITANCE

 POSIX::1003::Termios
   is a POSIX::1003::Module

 POSIX::1003::Termios
   is a POSIX::Termios

SYNOPSIS

  use POSIX::1003::Termios qw(:speed);
  $termios = POSIX::1003::Termios->new;
  $ispeed = $termios->getispeed;
  $termios->setospeed(B9600);

  use POSIX::1003::Termios qw(:functions :actions);
  tcsendbreak($fd, $duration);
  tcflush($fd, TCIFLUSH);

  $tty  = ttyname($fd);
  $tty  = ttyname($fh->fileno);

DESCRIPTION

This module provides an interface to the "General Terminal Interfaces", as specified by POSIX. The actual implementation is part of POSIX.xs

See documentation in the base class.

METHODS

See documentation in the base class.

POSIX::1003::Termios->exampleValue(NAME)

See "METHODS" in POSIX::1003::Module

$obj->import()

See "METHODS" in POSIX::1003::Module

Constructors

POSIX::1003::Termios->new()

Create a new Termios object. This object will be destroyed automatically when it is no longer needed. A Termios object corresponds to the termios C struct.

  $termios = POSIX::1003::Termios->new;

Accessors

$obj->getattr([FD])

Get terminal control attributes (POSIX function tcgetattr). Pass a file descriptor, which defaults to 0 (stdin). Returns undef on failure.

  # Obtain the attributes for stdin
  $termios->getattr(0);
  $termios->getattr();

  # Obtain the attributes for stdout
  $termios->getattr(1);
$obj->getcc(INDEX)

Retrieve a value from the c_cc field of a termios object. The c_cc field is an array so an index must be specified. $c_cc[1] = $termios->getcc(1);

$obj->getcflag()

Retrieve the c_cflag field of a termios object. $c_cflag = $termios->getcflag;

$obj->getiflag()

Retrieve the c_iflag field of a termios object. $c_iflag = $termios->getiflag;

$obj->getispeed()

Retrieve the input baud rate. $ispeed = $termios->getispeed;

$obj->getlflag()

Retrieve the c_lflag field of a termios object. $c_lflag = $termios->getlflag;

$obj->getoflag()

Retrieve the c_oflag field of a termios object. $c_oflag = $termios->getoflag;

$obj->getospeed()

Retrieve the output baud rate. $ospeed = $termios->getospeed;

$obj->setattr(FD, FLAGS)

Set terminal control attributes (POSIX function tcsetattr). Returns undef on failure.

  # Set attributes immediately for stdout.
  $termios->setattr(1, TCSANOW);
$obj->setcc(VALUE, INDEX)

Set a value in the c_cc field of a termios object. The c_cc field is an array so an index must be specified. $termios->setcc(VEOF, 1 );

$obj->setcflag(FLAGS)

Set the c_cflag field of a termios object. $termios->setcflag( $c_cflag | CLOCAL );

$obj->setiflag(FLAGS)

Set the c_iflag field of a termios object. $termios->setiflag( $c_iflag | BRKINT );

$obj->setispeed()

Set the input baud rate. Returns undef on failure. $termios->setispeed( B9600 );

$obj->setlflag(FLAGS)

Set the c_lflag field of a termios object. $termios->setlflag( $c_lflag | ECHO );

$obj->setoflag(FLAGS)

Set the c_oflag field of a termios object. $termios->setoflag( $c_oflag | OPOST );

$obj->setospeed()

Set the output baud rate. $termios->setospeed( B9600 );

FUNCTIONS

tcdrain(FD)
tcflow(FD, ACTION)

See the possible ACTION values in "CONSTANTS", import tag :action

tcflush(FD, QUEUE)

See the possible QUEUE values in "CONSTANTS", import tag :flush

tcsendbreak(FD, DURATION)

DURATION is system dependent.

ttyname(FD)

Returns the path to the special device which relates to the file-descriptor. See also POSIX::1003::Proc::ctermid()

  $tty  = ttyname($fd);
  $tty  = ttyname($fh->fileno);

CONSTANTS

Available baudrates (ispeed and ospeed), export tag :speed.
  B0 B50 B75 B110 B134 B150 B200 B300 B600 B1200
  B1800 B2400 B4800 B9600 B19200 B38400
Interface values (getattr and setattr), export tag :actions.
  TCSADRAIN TCSANOW TCOON TCION TCSAFLUSH TCIOFF TCOOFF
To be used as tcflush() parameter QUEUE
  TCIOFLUSH TCOFLUSH TCIFLUSH
c_cc field values, export tag :flags as have all following constants.
  VEOF VEOL VERASE VINTR VKILL VQUIT VSUSP VSTART VSTOP VMIN
  VTIME NCCS
c_cflag field values
  CLOCAL CREAD CSIZE CS5 CS6 CS7 CS8 CSTOPB HUPCL PARENB PARODD
c_iflag field values
  BRKINT ICRNL IGNBRK IGNCR IGNPAR INLCR INPCK ISTRIP IXOFF
  IXON PARMRK
c_lflag field values
  ECHO ECHOE ECHOK ECHONL ICANON IEXTEN ISIG NOFLSH TOSTOP
c_oflag field values
  OPOST

All constants, shown here with the values discovered during installation of this module:

  B0         0          ICANON     2          TCIOFLUSH  2
  B110       3          ICRNL      256        TCION      3
  B1200      9          IEXTEN     32768      TCOFLUSH   1
  B134       4          IGNBRK     1          TCOOFF     0
  B150       5          IGNCR      128        TCOON      1
  B1800      10         IGNPAR     4          TCSADRAIN  1
  B19200     14         INLCR      64         TCSAFLUSH  2
  B200       6          INPCK      16         TCSANOW    0
  B2400      11         ISIG       1          TOSTOP     256
  B300       7          ISTRIP     32         VEOF       4
  B38400     15         IXOFF      4096       VEOL       11
  B4800      12         IXON       1024       VERASE     2
  B50        1          NCCS       32         VINTR      0
  B600       8          NOFLSH     128        VKILL      3
  B75        2          OPOST      1          VMIN       6
  B9600      13         PARENB     256        VQUIT      1
  BRKINT     2          PARMRK     8          VSTART     8
  CLOCAL     2048       PARODD     512        VSTOP      9
  ECHONL     64         TCIFLUSH   0          VSUSP      10
  HUPCL      1024       TCIOFF     2          VTIME      5

SEE ALSO

This module is part of POSIX-1003 distribution version 0.98, built on December 03, 2013. Website: http://perl.overmeer.net. The code is based on POSIX, which is released with Perl itself. See also POSIX::Util for additional functionality.

COPYRIGHTS

Copyrights 2011-2013 on the perl code and the related documentation by [Mark Overmeer]. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html