---
name: "POSIX"
section: "3pm"
platform: "linux"
package: "perl-5.004-doc"
version: "5.004.05-6"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/POSIX/3pm"
---

# POSIX(3pm)

POSIX - Perl interface to IEEE Std 1003.1

```
    use POSIX;
    use POSIX qw(setsid);
    use POSIX qw(:errno_h :fcntl_h);
```

```
    printf "EINTR is %d\n", EINTR;
```

```
    $sess_id = POSIX::setsid();
```

```
    $fd = POSIX::open($path, O_CREAT⎪O_EXCL⎪O_WRONLY, 0644);
        # note: that's a filedescriptor, *NOT* a filehandle
```

The POSIX module permits you to access all (or nearly all) the standard POSIX 1003.1 identifiers.  Many of these identifiers have been given Perl-ish interfaces.  Things which are `#defines` in C, like EINTR or O\_NDELAY, are automatically exported into your namespace.  All functions are only exported if you ask for them explicitly.  Most likely people will prefer to use the fully-qualified function names. This document gives a condensed list of the features available in the POSIX module.  Consult your operating system's manpages for general information on most features.  Consult the *perlfunc* manpage for functions which are noted as being identical to Perl's builtin functions. The first section describes POSIX functions from the 1003.1 specification. The second section describes some classes for signal objects, TTY objects, and other miscellaneous objects.  The remaining sections list various constants and macros in an organization which roughly follows IEEE Std 1003.1b-1993. The POSIX module is probably the most complex Perl module supplied with the standard distribution.  It incorporates autoloading, namespace games, and dynamic loading of code that's in Perl, C, or both.  It's a great source of wisdom. A few functions are not implemented because they are C specific.  If you attempt to call these, they will print a message telling you that they aren't implemented, and suggest using the Perl equivalent should one exist.  For example, trying to access the *setjmp()* call will elicit the message "*setjmp()* is C-specific: use eval {} instead". Furthermore, some evil vendors will claim 1003.1 compliance, but in fact are not so: they will not pass the PCTS (POSIX Compliance Test Suites). For example, one vendor may not define EDEADLK, or the semantics of the errno values set by [*open*(2)](/open/2.md) might not be quite right.  Perl does not attempt to verify POSIX compliance.  That means you can currently successfully say "use POSIX",  and then later in your program you find that your vendor has been lax and there's no usable ICANON macro after all.  This could be construed to be a bug.\
 This is identical to the C function `_exit()`.\
 This is identical to the C function `abort()`.\
 This is identical to Perl's builtin `abs()` function.\
 Determines the accessibility of a file.

```
        if( POSIX::access( "/", &POSIX::R_OK ) ){
                print "have read permission\n";
        }
```

Returns `undef` on failure.\
 This is identical to the C function `acos()`.\
 This is identical to Perl's builtin `alarm()` function.\
 This is identical to the C function `asctime()`.\
 This is identical to the C function `asin()`.\
 Unimplemented.\
 This is identical to the C function `atan()`.\
 This is identical to Perl's builtin `atan2()` function.\
 *atexit()* is C-specific: use END {} instead.\
 *atof()* is C-specific.\
 *atoi()* is C-specific.\
 *atol()* is C-specific.\
 *bsearch()* not supplied.\
 *calloc()* is C-specific.\
 This is identical to the C function `ceil()`.\
 This is identical to Perl's builtin `chdir()` function.\
 This is identical to Perl's builtin `chmod()` function.\
 This is identical to Perl's builtin `chown()` function.\
 Use method `IO::Handle::clearerr()` instead.\
 This is identical to the C function `clock()`.\
 Close the file.  This uses file descriptors such as those obtained by calling `POSIX::open`.

```
        $fd = POSIX::open( "foo", &POSIX::O_RDONLY );
        POSIX::close( $fd );
```

Returns `undef` on failure.\
 This is identical to Perl's builtin `closedir()` function.\
 This is identical to Perl's builtin `cos()` function.\
 This is identical to the C function `cosh()`.\
 Create a new file.  This returns a file descriptor like the ones returned by `POSIX::open`.  Use `POSIX::close` to close the file.

```
        $fd = POSIX::creat( "foo", 0611 );
        POSIX::close( $fd );
```

Generates the path name for the controlling terminal.

```
        $path = POSIX::ctermid();
```

This is identical to the C function `ctime()`.\
 Get the character login name of the user.

```
        $name = POSIX::cuserid();
```

This is identical to the C function `difftime()`.\
 *div()* is C-specific.\
 This is similar to the C function `dup()`.

This uses file descriptors such as those obtained by calling `POSIX::open`.

Returns `undef` on failure.\
 This is similar to the C function `dup2()`.

This uses file descriptors such as those obtained by calling `POSIX::open`.

Returns `undef` on failure.\
 Returns the value of errno.

```
        $errno = POSIX::errno();
```

*execl()* is C-specific.\
 *execle()* is C-specific.\
 *execlp()* is C-specific.\
 *execv()* is C-specific.\
 *execve()* is C-specific.\
 *execvp()* is C-specific.\
 This is identical to Perl's builtin `exit()` function.\
 This is identical to Perl's builtin `exp()` function.\
 This is identical to Perl's builtin `abs()` function.\
 Use method `IO::Handle::close()` instead.\
 This is identical to Perl's builtin `fcntl()` function.\
 Use method `IO::Handle::new_from_fd()` instead.\
 Use method `IO::Handle::eof()` instead.\
 Use method `IO::Handle::error()` instead.\
 Use method `IO::Handle::flush()` instead.\
 Use method `IO::Handle::getc()` instead.\
 Use method `IO::Seekable::getpos()` instead.\
 Use method `IO::Handle::gets()` instead.\
 Use method `IO::Handle::fileno()` instead.\
 This is identical to the C function `floor()`.\
 This is identical to the C function `fmod()`.\
 Use method `IO::File::open()` instead.\
 This is identical to Perl's builtin `fork()` function.\
 Retrieves the value of a configurable limit on a file or directory.  This uses file descriptors such as those obtained by calling `POSIX::open`.

The following will determine the maximum length of the longest allowable pathname on the filesystem which holds `/tmp/foo`.

```
        $fd = POSIX::open( "/tmp/foo", &POSIX::O_RDONLY );
        $path_max = POSIX::fpathconf( $fd, &POSIX::_PC_PATH_MAX );
```

Returns `undef` on failure.\
 *fprintf()* is C-specific--use printf instead.\
 *fputc()* is C-specific--use print instead.\
 *fputs()* is C-specific--use print instead.\
 *fread()* is C-specific--use read instead.\
 *free()* is C-specific.\
 *freopen()* is C-specific--use open instead.\
 Return the mantissa and exponent of a floating-point number.

```
        ($mantissa, $exponent) = POSIX::frexp( 3.14 );
```

*fscanf()* is C-specific--use \<\> and regular expressions instead.\
 Use method `IO::Seekable::seek()` instead.\
 Use method `IO::Seekable::setpos()` instead.\
 Get file status.  This uses file descriptors such as those obtained by calling `POSIX::open`.  The data returned is identical to the data from Perl's builtin `stat` function.

```
        $fd = POSIX::open( "foo", &POSIX::O_RDONLY );
        @stats = POSIX::fstat( $fd );
```

Use method `IO::Seekable::tell()` instead.\
 *fwrite()* is C-specific--use print instead.\
 This is identical to Perl's builtin `getc()` function.\
 Returns one character from STDIN.\
 Returns the name of the current working directory.\
 Returns the effective group id.\
 Returns the value of the specified enironment variable.\
 Returns the effective user id.\
 Returns the user's real group id.\
 This is identical to Perl's builtin `getgrgid()` function.\
 This is identical to Perl's builtin `getgrnam()` function.\
 Returns the ids of the user's supplementary groups.\
 This is identical to Perl's builtin `getlogin()` function.\
 This is identical to Perl's builtin `getpgrp()` function.\
 Returns the process's id.\
 This is identical to Perl's builtin `getppid()` function.\
 This is identical to Perl's builtin `getpwnam()` function.\
 This is identical to Perl's builtin `getpwuid()` function.\
 Returns one line from STDIN.\
 Returns the user's id.\
 This is identical to Perl's builtin `gmtime()` function.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 Returns a boolean indicating whether the specified filehandle is connected to a tty.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 This is identical to the C function, except that it can apply to a single character or to a whole string.\
 This is identical to Perl's builtin `kill()` function.\
 *labs()* is C-specific, use abs instead.\
 This is identical to the C function `ldexp()`.\
 *ldiv()* is C-specific, use / and int instead.\
 This is identical to Perl's builtin `link()` function.\
 Get numeric formatting information.  Returns a reference to a hash containing the current locale formatting values.

The database for the **de** (Deutsch or German) locale.

```
        $loc = POSIX::setlocale( &POSIX::LC_ALL, "de" );
        print "Locale = $loc\n";
        $lconv = POSIX::localeconv();
        print "decimal_point    = ", $lconv->{decimal_point},   "\n";
        print "thousands_sep    = ", $lconv->{thousands_sep},   "\n";
        print "grouping = ", $lconv->{grouping},        "\n";
        print "int_curr_symbol  = ", $lconv->{int_curr_symbol}, "\n";
        print "currency_symbol  = ", $lconv->{currency_symbol}, "\n";
        print "mon_decimal_point = ", $lconv->{mon_decimal_point}, "\n";
        print "mon_thousands_sep = ", $lconv->{mon_thousands_sep}, "\n";
        print "mon_grouping     = ", $lconv->{mon_grouping},    "\n";
        print "positive_sign    = ", $lconv->{positive_sign},   "\n";
        print "negative_sign    = ", $lconv->{negative_sign},   "\n";
        print "int_frac_digits  = ", $lconv->{int_frac_digits}, "\n";
        print "frac_digits      = ", $lconv->{frac_digits},     "\n";
        print "p_cs_precedes    = ", $lconv->{p_cs_precedes},   "\n";
        print "p_sep_by_space   = ", $lconv->{p_sep_by_space},  "\n";
        print "n_cs_precedes    = ", $lconv->{n_cs_precedes},   "\n";
        print "n_sep_by_space   = ", $lconv->{n_sep_by_space},  "\n";
        print "p_sign_posn      = ", $lconv->{p_sign_posn},     "\n";
        print "n_sign_posn      = ", $lconv->{n_sign_posn},     "\n";
```

This is identical to Perl's builtin `localtime()` function.\
 This is identical to Perl's builtin `log()` function.\
 This is identical to the C function `log10()`.\
 *longjmp()* is C-specific: use die instead.\
 Move the file's read/write position.  This uses file descriptors such as those obtained by calling `POSIX::open`.

```
        $fd = POSIX::open( "foo", &POSIX::O_RDONLY );
        $off_t = POSIX::lseek( $fd, 0, &POSIX::SEEK_SET );
```

Returns `undef` on failure.\
 *malloc()* is C-specific.\
 This is identical to the C function `mblen()`.\
 This is identical to the C function `mbstowcs()`.\
 This is identical to the C function `mbtowc()`.\
 *memchr()* is C-specific, use *index()* instead.\
 *memcmp()* is C-specific, use eq instead.\
 *memcpy()* is C-specific, use = instead.\
 *memmove()* is C-specific, use = instead.\
 *memset()* is C-specific, use x instead.\
 This is identical to Perl's builtin `mkdir()` function.\
 This is similar to the C function `mkfifo()`.

Returns `undef` on failure.\
 Convert date/time info to a calendar time.

Synopsis:

```
        mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = 0)
```

The month (`mon`), weekday (`wday`), and yearday (`yday`) begin at zero. I.e. January is 0, not 1; Sunday is 0, not 1; January 1st is 0, not 1.  The year (`year`) is given in years since 1900.  I.e. The year 1995 is 95; the year 2001 is 101.  Consult your system's `mktime()` manpage for details about these and the other arguments.

Calendar time for December 12, 1995, at 10:30 am.

```
        $time_t = POSIX::mktime( 0, 30, 10, 12, 11, 95 );
        print "Date = ", POSIX::ctime($time_t);
```

Returns `undef` on failure.\
 Return the integral and fractional parts of a floating-point number.

```
        ($fractional, $integral) = POSIX::modf( 3.14 );
```

This is similar to the C function `nice()`.

Returns `undef` on failure.\
 *offsetof()* is C-specific.\
 Open a file for reading for writing.  This returns file descriptors, not Perl filehandles.  Use `POSIX::close` to close the file.

Open a file read-only with mode 0666.

```
        $fd = POSIX::open( "foo" );
```

Open a file for read and write.

```
        $fd = POSIX::open( "foo", &POSIX::O_RDWR );
```

Open a file for write, with truncation.

```
        $fd = POSIX::open( "foo", &POSIX::O_WRONLY ⎪ &POSIX::O_TRUNC );
```

Create a new file with mode 0640.  Set up the file for writing.

```
        $fd = POSIX::open( "foo", &POSIX::O_CREAT ⎪ &POSIX::O_WRONLY, 0640 );
```

Returns `undef` on failure.\
 Open a directory for reading.

```
        $dir = POSIX::opendir( "/tmp" );
        @files = POSIX::readdir( $dir );
        POSIX::closedir( $dir );
```

Returns `undef` on failure.\
 Retrieves the value of a configurable limit on a file or directory.

The following will determine the maximum length of the longest allowable pathname on the filesystem which holds `/tmp`.

```
        $path_max = POSIX::pathconf( "/tmp", &POSIX::_PC_PATH_MAX );
```

Returns `undef` on failure.\
 This is similar to the C function `pause()`.

Returns `undef` on failure.\
 This is identical to the C function `perror()`.\
 Create an interprocess channel.  This returns file descriptors like those returned by `POSIX::open`.

```
        ($fd0, $fd1) = POSIX::pipe();
        POSIX::write( $fd0, "hello", 5 );
        POSIX::read( $fd1, $buf, 5 );
```

Computes `$x` raised to the power `$exponent`.

```
        $ret = POSIX::pow( $x, $exponent );
```

Prints the specified arguments to STDOUT.\
 *putc()* is C-specific--use print instead.\
 *putchar()* is C-specific--use print instead.\
 *puts()* is C-specific--use print instead.\
 *qsort()* is C-specific, use sort instead.\
 Sends the specified signal to the current process.\
 *rand()* is non-portable, use Perl's rand instead.\
 Read from a file.  This uses file descriptors such as those obtained by calling `POSIX::open`.  If the buffer `$buf` is not large enough for the read then Perl will extend it to make room for the request.

```
        $fd = POSIX::open( "foo", &POSIX::O_RDONLY );
        $bytes = POSIX::read( $fd, $buf, 3 );
```

Returns `undef` on failure.\
 This is identical to Perl's builtin `readdir()` function.\
 *realloc()* is C-specific.\
 This is identical to Perl's builtin `unlink()` function.\
 This is identical to Perl's builtin `rename()` function.\
 Seeks to the beginning of the file.\
 This is identical to Perl's builtin `rewinddir()` function.\
 This is identical to Perl's builtin `rmdir()` function.\
 *scanf()* is C-specific--use \<\> and regular expressions instead.\
 Sets the real group id for this process.\
 *setjmp()* is C-specific: use eval {} instead.\
 Modifies and queries program's locale.

The following will set the traditional UNIX system locale behavior (the second argument `"C"`).

```
        $loc = POSIX::setlocale( &POSIX::LC_ALL, "C" );
```

The following will query (the missing second argument) the current LC\_CTYPE category.

```
        $loc = POSIX::setlocale( &POSIX::LC_CTYPE);
```

The following will set the LC\_CTYPE behaviour according to the locale environment variables (the second argument `""`). Please see your systems the *[setlocale(3)](/setlocale/3.md)* manpage documentation for the locale environment variables' meaning or consult the *perllocale* manpage.

```
        $loc = POSIX::setlocale( &POSIX::LC_CTYPE, "");
```

The following will set the LC\_COLLATE behaviour to Argentinian Spanish. **NOTE**: The naming and availability of locales depends on your operating system. Please consult the *perllocale* manpage for how to find out which locales are available in your system.

```
        $loc = POSIX::setlocale( &POSIX::LC_ALL, "es_AR.ISO8859-1" );
```

This is similar to the C function `setpgid()`.

Returns `undef` on failure.\
 This is identical to the C function `setsid()`.\
 Sets the real user id for this process.\
 Detailed signal management.  This uses `POSIX::SigAction` objects for the `action` and `oldaction` arguments.  Consult your system's `sigaction` manpage for details.

Synopsis:

```
        sigaction(sig, action, oldaction = 0)
```

Returns `undef` on failure.\
 *siglongjmp()* is C-specific: use die instead.\
 Examine signals that are blocked and pending.  This uses `POSIX::SigSet` objects for the `sigset` argument.  Consult your system's `sigpending` manpage for details.

Synopsis:

```
        sigpending(sigset)
```

Returns `undef` on failure.\
 Change and/or examine calling process's signal mask.  This uses `POSIX::SigSet` objects for the `sigset` and `oldsigset` arguments. Consult your system's `sigprocmask` manpage for details.

Synopsis:

```
        sigprocmask(how, sigset, oldsigset = 0)
```

Returns `undef` on failure.\
 *sigsetjmp()* is C-specific: use eval {} instead.\
 Install a signal mask and suspend process until signal arrives.  This uses `POSIX::SigSet` objects for the `signal_mask` argument.  Consult your system's `sigsuspend` manpage for details.

Synopsis:

```
        sigsuspend(signal_mask)
```

Returns `undef` on failure.\
 This is identical to Perl's builtin `sin()` function.\
 This is identical to the C function `sinh()`.\
 This is identical to Perl's builtin `sleep()` function.\
 This is identical to Perl's builtin `sprintf()` function.\
 This is identical to Perl's builtin `sqrt()` function.\
 *srand()*.\
 *sscanf()* is C-specific--use regular expressions instead.\
 This is identical to Perl's builtin `stat()` function.\
 *strcat()* is C-specific, use .= instead.\
 *strchr()* is C-specific, use *index()* instead.\
 *strcmp()* is C-specific, use eq instead.\
 This is identical to the C function `strcoll()`.\
 *strcpy()* is C-specific, use = instead.\
 *strcspn()* is C-specific, use regular expressions instead.\
 Returns the error string for the specified errno.\
 Convert date and time information to string.  Returns the string.

Synopsis:

```
        strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1)
```

The month (`mon`), weekday (`wday`), and yearday (`yday`) begin at zero. I.e. January is 0, not 1; Sunday is 0, not 1; January 1st is 0, not 1.  The year (`year`) is given in years since 1900.  I.e., the year 1995 is 95; the year 2001 is 101.  Consult your system's `strftime()` manpage for details about these and the other arguments.  The given arguments are made consistent by calling `mktime()` before calling your system's `strftime()` function.

The string for Tuesday, December 12, 1995.

```
        $str = POSIX::strftime( "%A, %B %d, %Y", 0, 0, 0, 12, 11, 95, 2 );
        print "$str\n";
```

*strlen()* is C-specific, use length instead.\
 *strncat()* is C-specific, use .= instead.\
 *strncmp()* is C-specific, use eq instead.\
 *strncpy()* is C-specific, use = instead.\
 *stroul()* is C-specific.\
 *strpbrk()* is C-specific.\
 *strrchr()* is C-specific, use *rindex()* instead.\
 *strspn()* is C-specific.\
 This is identical to Perl's builtin `index()` function.\
 String to double translation. Returns the parsed number and the number of characters in the unparsed portion of the string.  Truly POSIX-compliant systems set $! ($ERRNO) to indicate a translation error, so clear $! before calling strtod.  However, non-POSIX systems may not check for overflow, and therefore will never set $!.

strtod should respect any POSIX *setlocale()* settings.

To parse a string `$str` as a floating point number use

```
    $! = 0;
    ($num, $n_unparsed) = POSIX::strtod($str);
```

The second returned item and $! can be used to check for valid input:

```
    if (($str eq '') ⎪⎪ ($n_unparsed != 0) ⎪⎪ !$!) {
        die "Non-numeric input $str" . $! ? ": $!\n" : "\n";
    }
```

When called in a scalar context strtod returns the parsed number.\
 *strtok()* is C-specific.\
 String to (long) integer translation.  Returns the parsed number and the number of characters in the unparsed portion of the string.  Truly POSIX-compliant systems set $! ($ERRNO) to indicate a translation error, so clear $! before calling strtol.  However, non-POSIX systems may not check for overflow, and therefore will never set $!.

strtol should respect any POSIX *setlocale()* settings.

To parse a string `$str` as a number in some base `$base` use

```
    $! = 0;
    ($num, $n_unparsed) = POSIX::strtol($str, $base);
```

The base should be zero or between 2 and 36, inclusive.  When the base is zero or omitted strtol will use the string itself to determine the base: a leading "0x" or "0X" means hexadecimal; a leading "0" means octal; any other leading characters mean decimal.  Thus, "1234" is parsed as a decimal number, "01234" as an octal number, and "0x1234" as a hexadecimal number.

The second returned item and $! can be used to check for valid input:

```
    if (($str eq '') ⎪⎪ ($n_unparsed != 0) ⎪⎪ !$!) {
        die "Non-numeric input $str" . $! ? ": $!\n" : "\n";
    }
```

When called in a scalar context strtol returns the parsed number.\
 String to unsigned (long) integer translation.  strtoul is identical to strtol except that strtoul only parses unsigned integers.  See *strtol* for details.

Note: Some vendors supply strtod and strtol but not strtoul. Other vendors that do suply strtoul parse "-1" as a valid value.\
 String transformation.  Returns the transformed string.

```
        $dst = POSIX::strxfrm( $src );
```

Retrieves values of system configurable variables.

The following will get the machine's clock speed.

```
        $clock_ticks = POSIX::sysconf( &POSIX::_SC_CLK_TCK );
```

Returns `undef` on failure.\
 This is identical to Perl's builtin `system()` function.\
 This is identical to the C function `tan()`.\
 This is identical to the C function `tanh()`.\
 This is similar to the C function `tcdrain()`.

Returns `undef` on failure.\
 This is similar to the C function `tcflow()`.

Returns `undef` on failure.\
 This is similar to the C function `tcflush()`.

Returns `undef` on failure.\
 This is identical to the C function `tcgetpgrp()`.\
 This is similar to the C function `tcsendbreak()`.

Returns `undef` on failure.\
 This is similar to the C function `tcsetpgrp()`.

Returns `undef` on failure.\
 This is identical to Perl's builtin `time()` function.\
 The *times()* function returns elapsed realtime since some point in the past (such as system startup), user and system times for this process, and user and system times used by child processes.  All times are returned in clock ticks.

```
    ($realtime, $user, $system, $cuser, $csystem) = POSIX::times();
```

Note: Perl's builtin `times()` function returns four values, measured in seconds.\
 Use method `IO::File::new_tmpfile()` instead.\
 Returns a name for a temporary file.

```
        $tmpfile = POSIX::tmpnam();
```

This is identical to Perl's builtin `lc()` function.\
 This is identical to Perl's builtin `uc()` function.\
 This is identical to the C function `ttyname()`.\
 Retrieves the time conversion information from the `tzname` variable.

```
        POSIX::tzset();
        ($std, $dst) = POSIX::tzname();
```

This is identical to the C function `tzset()`.\
 This is identical to Perl's builtin `umask()` function.\
 Get name of current operating system.

```
        ($sysname, $nodename, $release, $version, $machine ) = POSIX::uname();
```

Use method `IO::Handle::ungetc()` instead.\
 This is identical to Perl's builtin `unlink()` function.\
 This is identical to Perl's builtin `utime()` function.\
 *vfprintf()* is C-specific.\
 *vprintf()* is C-specific.\
 *vsprintf()* is C-specific.\
 This is identical to Perl's builtin `wait()` function.\
 Wait for a child process to change state.  This is identical to Perl's builtin `waitpid()` function.

```
        $pid = POSIX::waitpid( -1, &POSIX::WNOHANG );
        print "status = ", ($? / 256), "\n";
```

This is identical to the C function `wcstombs()`.\
 This is identical to the C function `wctomb()`.\
 Write to a file.  This uses file descriptors such as those obtained by calling `POSIX::open`.

```
        $fd = POSIX::open( "foo", &POSIX::O_WRONLY );
        $buf = "hello";
        $bytes = POSIX::write( $b, $buf, 5 );
```

Returns `undef` on failure.\
 **POSIX::SigAction**\
 Creates a new `POSIX::SigAction` object which corresponds to the C `struct sigaction`.  This object will be destroyed automatically when it is no longer needed.  The first parameter is the fully-qualified name of a sub which is a signal-handler.  The second parameter is a `POSIX::SigSet` object, it defaults to the empty set.  The third parameter contains the `sa_flags`, it defaults to 0.

```
        $sigset = POSIX::SigSet->new(SIGINT, SIGQUIT);
        $sigaction = POSIX::SigAction->new( 'main::handler', $sigset, &POSIX::SA_NOCLDSTOP );
```

This `POSIX::SigAction` object should be used with the `POSIX::sigaction()` function.\
 **POSIX::SigSet**\
 Create a new SigSet object.  This object will be destroyed automatically when it is no longer needed.  Arguments may be supplied to initialize the set.

Create an empty set.

```
        $sigset = POSIX::SigSet->new;
```

Create a set with SIGUSR1.

```
        $sigset = POSIX::SigSet->new( &POSIX::SIGUSR1 );
```

Add a signal to a SigSet object.

```
        $sigset->addset( &POSIX::SIGUSR2 );
```

Returns `undef` on failure.\
 Remove a signal from the SigSet object.

```
        $sigset->delset( &POSIX::SIGUSR2 );
```

Returns `undef` on failure.\
 Initialize the SigSet object to be empty.

```
        $sigset->emptyset();
```

Returns `undef` on failure.\
 Initialize the SigSet object to include all signals.

```
        $sigset->fillset();
```

Returns `undef` on failure.\
 Tests the SigSet object to see if it contains a specific signal.

```
        if( $sigset->ismember( &POSIX::SIGUSR1 ) ){
                print "contains SIGUSR1\n";
        }
```

**POSIX::Termios**\
 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.  *new()* mallocs a new one, *getattr()* fills it from a file descriptor, and *setattr()* sets a file descriptor's parameters to match Termios' contents.

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

Get terminal control attributes.

Obtain the attributes for stdin.

```
        $termios->getattr()
```

Obtain the attributes for stdout.

```
        $termios->getattr( 1 )
```

Returns `undef` on failure.\
 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);
```

Retrieve the c\_cflag field of a termios object.

```
        $c_cflag = $termios->getcflag;
```

Retrieve the c\_iflag field of a termios object.

```
        $c_iflag = $termios->getiflag;
```

Retrieve the input baud rate.

```
        $ispeed = $termios->getispeed;
```

Retrieve the c\_lflag field of a termios object.

```
        $c_lflag = $termios->getlflag;
```

Retrieve the c\_oflag field of a termios object.

```
        $c_oflag = $termios->getoflag;
```

Retrieve the output baud rate.

```
        $ospeed = $termios->getospeed;
```

Set terminal control attributes.

Set attributes immediately for stdout.

```
        $termios->setattr( 1, &POSIX::TCSANOW );
```

Returns `undef` on failure.\
 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( &POSIX::VEOF, 1 );
```

Set the c\_cflag field of a termios object.

```
        $termios->setcflag( $c_cflag ⎪ &POSIX::CLOCAL );
```

Set the c\_iflag field of a termios object.

```
        $termios->setiflag( $c_iflag ⎪ &POSIX::BRKINT );
```

Set the input baud rate.

```
        $termios->setispeed( &POSIX::B9600 );
```

Returns `undef` on failure.\
 Set the c\_lflag field of a termios object.

```
        $termios->setlflag( $c_lflag ⎪ &POSIX::ECHO );
```

Set the c\_oflag field of a termios object.

```
        $termios->setoflag( $c_oflag ⎪ &POSIX::OPOST );
```

Set the output baud rate.

```
        $termios->setospeed( &POSIX::B9600 );
```

Returns `undef` on failure.\
 B38400 B75 B200 B134 B300 B1800 B150 B0 B19200 B1200 B9600 B600 B4800 B50 B2400 B110\
 TCSADRAIN TCSANOW TCOON TCIOFLUSH TCOFLUSH TCION TCIFLUSH TCSAFLUSH TCIOFF TCOOFF\
 VEOF VEOL VERASE VINTR VKILL VQUIT VSUSP VSTART VSTOP VMIN VTIME NCCS\
 CLOCAL CREAD CSIZE CS5 CS6 CS7 CS8 CSTOPB HUPCL PARENB PARODD\
 BRKINT ICRNL IGNBRK IGNCR IGNPAR INLCR INPCK ISTRIP IXOFF IXON PARMRK\
 ECHO ECHOE ECHOK ECHONL ICANON IEXTEN ISIG NOFLSH TOSTOP\
 OPOST\
 \_PC\_CHOWN\_RESTRICTED \_PC\_LINK\_MAX \_PC\_MAX\_CANON \_PC\_MAX\_INPUT \_PC\_NAME\_MAX \_PC\_NO\_TRUNC \_PC\_PATH\_MAX \_PC\_PIPE\_BUF \_PC\_VDISABLE\
 \_POSIX\_ARG\_MAX \_POSIX\_CHILD\_MAX \_POSIX\_CHOWN\_RESTRICTED \_POSIX\_JOB\_CONTROL \_POSIX\_LINK\_MAX \_POSIX\_MAX\_CANON \_POSIX\_MAX\_INPUT \_POSIX\_NAME\_MAX \_POSIX\_NGROUPS\_MAX \_POSIX\_NO\_TRUNC \_POSIX\_OPEN\_MAX \_POSIX\_PATH\_MAX \_POSIX\_PIPE\_BUF \_POSIX\_SAVED\_IDS \_POSIX\_SSIZE\_MAX \_POSIX\_STREAM\_MAX \_POSIX\_TZNAME\_MAX \_POSIX\_VDISABLE \_POSIX\_VERSION\
 \_SC\_ARG\_MAX \_SC\_CHILD\_MAX \_SC\_CLK\_TCK \_SC\_JOB\_CONTROL \_SC\_NGROUPS\_MAX \_SC\_OPEN\_MAX \_SC\_SAVED\_IDS \_SC\_STREAM\_MAX \_SC\_TZNAME\_MAX \_SC\_VERSION\
 E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV\
 FD\_CLOEXEC F\_DUPFD F\_GETFD F\_GETFL F\_GETLK F\_OK F\_RDLCK F\_SETFD F\_SETFL F\_SETLK F\_SETLKW F\_UNLCK F\_WRLCK O\_ACCMODE O\_APPEND O\_CREAT O\_EXCL O\_NOCTTY O\_NONBLOCK O\_RDONLY O\_RDWR O\_TRUNC O\_WRONLY\
 DBL\_DIG DBL\_EPSILON DBL\_MANT\_DIG DBL\_MAX DBL\_MAX\_10\_EXP DBL\_MAX\_EXP DBL\_MIN DBL\_MIN\_10\_EXP DBL\_MIN\_EXP FLT\_DIG FLT\_EPSILON FLT\_MANT\_DIG FLT\_MAX FLT\_MAX\_10\_EXP FLT\_MAX\_EXP FLT\_MIN FLT\_MIN\_10\_EXP FLT\_MIN\_EXP FLT\_RADIX FLT\_ROUNDS LDBL\_DIG LDBL\_EPSILON LDBL\_MANT\_DIG LDBL\_MAX LDBL\_MAX\_10\_EXP LDBL\_MAX\_EXP LDBL\_MIN LDBL\_MIN\_10\_EXP LDBL\_MIN\_EXP\
 ARG\_MAX CHAR\_BIT CHAR\_MAX CHAR\_MIN CHILD\_MAX INT\_MAX INT\_MIN LINK\_MAX LONG\_MAX LONG\_MIN MAX\_CANON MAX\_INPUT MB\_LEN\_MAX NAME\_MAX NGROUPS\_MAX OPEN\_MAX PATH\_MAX PIPE\_BUF SCHAR\_MAX SCHAR\_MIN SHRT\_MAX SHRT\_MIN SSIZE\_MAX STREAM\_MAX TZNAME\_MAX UCHAR\_MAX UINT\_MAX ULONG\_MAX USHRT\_MAX\
 LC\_ALL LC\_COLLATE LC\_CTYPE LC\_MONETARY LC\_NUMERIC LC\_TIME\
 HUGE\_VAL\
 SA\_NOCLDSTOP SA\_NOCLDWAIT SA\_NODEFER SA\_ONSTACK SA\_RESETHAND SA\_RESTART SA\_SIGINFO SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 SIG\_BLOCK SIG\_DFL SIG\_ERR SIG\_IGN SIG\_SETMASK SIG\_UNBLOCK\
 S\_IRGRP S\_IROTH S\_IRUSR S\_IRWXG S\_IRWXO S\_IRWXU S\_ISGID S\_ISUID S\_IWGRP S\_IWOTH S\_IWUSR S\_IXGRP S\_IXOTH S\_IXUSR\
 S\_ISBLK S\_ISCHR S\_ISDIR S\_ISFIFO S\_ISREG\
 EXIT\_FAILURE EXIT\_SUCCESS MB\_CUR\_MAX RAND\_MAX\
 BUFSIZ EOF FILENAME\_MAX L\_ctermid L\_cuserid L\_tmpname TMP\_MAX\
 CLK\_TCK CLOCKS\_PER\_SEC\
 R\_OK SEEK\_CUR SEEK\_END SEEK\_SET STDIN\_FILENO STDOUT\_FILENO STRERR\_FILENO W\_OK X\_OK\
 WNOHANG WUNTRACED\
 WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG WIFSTOPPED WSTOPSIG This document generated by ./mkposixman.PL version 19960129.
