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.
Everything is exported by default with the exception of any POSIX functions with the same name as a built-in Perl function, such as
abs, alarm, rmdir, write, etc.., which will be exported
only if you ask for them explicitly. This is an unfortunate backwards
compatibility feature. You can stop the exporting by saying use POSIX () and then use the fully qualified names (ie. POSIX::SEEK_END).
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 11.
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 perlfunc 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) 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(). It exits the program
immediately which means among other things buffered I/O is not flushed.
Note that when using threads and in Linux this is not a good way to
exit a thread because in Linux processes and threads are kind of the
same thing (Note: while this is the situation in early 2003 there are
projects under way to have threads with more POSIXly semantics in Linux).
If you want not to return from a thread, detach the thread.
This is identical to the C function abort(). It terminates the
process with a SIGABRT signal unless caught by a signal handler or if the handler does not return normally (it e.g. does a longjmp).
Returns undef on failure. Note: do not use access() for
security purposes. Between the access() call and the operation
you are preparing for the permissions might change: a classic
race condition.
The $mon is zero-based: January equals 0. The $year is
1900-based: 2001 equals 101. The $wday, $yday, and $isdst
default to zero (and the first two are usually ignored anyway).
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 44.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 44.
Unimplemented, but you can use perlfunc/die and the Carp module
to achieve similar things.
This is identical to Perl's builtin atan2() function, returning
the arcus tangent defined by its two numerical arguments, the y
coordinate and the x coordinate. See also the Math::Trig manpage.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 54.
atoi() is C-specific. Perl converts strings to numbers transparently.
If you need to force a scalar to a number, add a zero to it.
If you need to have just the integer part, see perlfunc/int.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 56.
atol() is C-specific. Perl converts strings to numbers transparently.
If you need to force a scalar to a number, add a zero to it.
If you need to have just the integer part, see perlfunc/int.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 81.
This is identical to Perl's builtin cos() function, for returning
the cosine of its numerical argument, see perlfunc/cos.
See also the Math::Trig manpage.
It returns the remainder $r = $x - $n*$y, where $n = trunc($x/$y).
The $r has the same sign as $x and magnitude (absolute value) less than the magnitude of $y.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 159.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 159.
This is identical to Perl's builtin fork() function
for duplicating the current process, see perlfunc/fork
and perlforkif you are in Windows.
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.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 222.
This is identical to Perl's builtin getppid() function for
returning the process identifier of the parent process of the current
process , see perlfunc/getppid.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 228.
Returns one line from STDIN, similar to <>, also known
as the readline() function, see perlfunc/readline.
NOTE: if you have C programs that still use gets(), be very
afraid. The gets() function is a source of endless grief because
it has no buffer overrun checks. It should never be used. The
fgets() function should be preferred instead.
This is identical to the C function, except that it can apply to a
single character or to a whole string. Note that locale settings may
affect what characters are considered isalnum. Does not work on
Unicode characters code point 256 or higher. Consider using regular
expressions and the /[[:alnum:]]/ construct instead, or possibly
the /\w/ construct.
This is identical to the C function, except that it can apply to
a single character or to a whole string. Note that locale settings
may affect what characters are considered isalpha. Does not work
on Unicode characters code point 256 or higher. Consider using regular
expressions and the /[[:alpha:]]/ construct instead.
This is identical to the C function, except that it can apply to
a single character or to a whole string. Note that locale settings
may affect what characters are considered iscntrl. Does not work
on Unicode characters code point 256 or higher. Consider using regular
expressions and the /[[:cntrl:]]/ construct instead.
This is identical to the C function, except that it can apply to
a single character or to a whole string. Note that locale settings
may affect what characters are considered isdigit (unlikely, but
still possible). Does not work on Unicode characters code point 256
or higher. Consider using regular expressions and the /[[:digit:]]/
construct instead, or the /\d/ construct.
This is identical to the C function, except that it can apply to
a single character or to a whole string. Note that locale settings
may affect what characters are considered isgraph. Does not work
on Unicode characters code point 256 or higher. Consider using regular
expressions and the /[[:graph:]]/ construct instead.
This is identical to the C function, except that it can apply to
a single character or to a whole string. Note that locale settings
may affect what characters are considered islower. Does not work
on Unicode characters code point 256 or higher. Consider using regular
expressions and the /[[:lower:]]/ construct instead. Do not use
/[a-z]/.
This is identical to the C function, except that it can apply to
a single character or to a whole string. Note that locale settings
may affect what characters are considered isprint. Does not work
on Unicode characters code point 256 or higher. Consider using regular
expressions and the /[[:print:]]/ construct instead.
This is identical to the C function, except that it can apply to
a single character or to a whole string. Note that locale settings
may affect what characters are considered ispunct. Does not work
on Unicode characters code point 256 or higher. Consider using regular
expressions and the /[[:punct:]]/ construct instead.
This is identical to the C function, except that it can apply to
a single character or to a whole string. Note that locale settings
may affect what characters are considered isspace. Does not work
on Unicode characters code point 256 or higher. Consider using regular
expressions and the /[[:space:]]/ construct instead, or the /\s/
construct. (Note that /\s/ and /[[:space:]]/ are slightly
different in that /[[:space:]]/ can normally match a vertical tab,
while /\s/ does not.)
This is identical to the C function, except that it can apply to
a single character or to a whole string. Note that locale settings
may affect what characters are considered isupper. Does not work
on Unicode characters code point 256 or higher. Consider using regular
expressions and the /[[:upper:]]/ construct instead. Do not use
/[A-Z]/.
This is identical to the C function, except that it can apply to a single
character or to a whole string. Note that locale settings may affect what
characters are considered isxdigit (unlikely, but still possible).
Does not work on Unicode characters code point 256 or higher.
Consider using regular expressions and the /[[:xdigit:]]/
construct instead, or simply /[0-9a-f]/i.
This is identical to the C function mblen().
Perl does not have any support for the wide and multibyte
characters of the C standards, so this might be a rather
useless function.
This is identical to the C function mbstowcs().
Perl does not have any support for the wide and multibyte
characters of the C standards, so this might be a rather
useless function.
This is identical to the C function mbtowc().
Perl does not have any support for the wide and multibyte
characters of the C standards, so this might be a rather
useless function.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 303.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 303.
memcpy() is C-specific, use =, see perlop, or see perlfunc/substr.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 305.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 305.
memmove() is C-specific, use =, see perlop, or see perlfunc/substr.
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.
This is similar to the C function nice(), for changing
the scheduling preference of the current process. Positive
arguments mean more polite process, negative values more
needy process. Normal user processes can only be more polite.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 355.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 355.
This is identical to the C function perror(), which outputs to the
standard error stream the specified message followed by ``: '' and the
current error string. Use the warn() function and the $!
variable instead, see perlfunc/warn and perlvar/$ERRNO.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 375.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 375.
Sends the specified signal to the current process.
See also perlfunc/kill and the $$ in perlvar/$PID.
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.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 400.
Sets the real group identifier and the effective group identifier for
this process. Similar to assigning a value to the Perl's builtin
$) variable, see perlvar/$GID, except that the latter
will change only the real user identifier, and that the setgid()
uses only a single numeric argument, as opposed to a space-separated
list of numbers.
The following will set the traditional UNIX system locale behavior
(the second argument "C").
$loc = setlocale( LC_ALL, "C" );
The following will query the current LC_CTYPE category. (No second
argument means 'query'.)
$loc = setlocale( LC_CTYPE );
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 411.
The following will set the LC_CTYPE behaviour according to the locale environment variables (the second argument "").
Please see your systems setlocale(3) documentation for the locale environment variables' meaning or consult perllocale.
$loc = setlocale( LC_CTYPE, "" );
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 413.
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 perllocale for how to find
out which locales are available in your system.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 421.
Sets the real user identifier and the effective user identifier for
this process. Similar to assigning a value to the Perl's builtin
$< variable, see perlvar/$UID, except that the latter
will change only the real user identifier.
Detailed signal management. This uses POSIX::SigAction objects for the
action and oldaction arguments. Consult your system's sigaction
manpage for details.
Synopsis:
sigaction(signal, action, oldaction = 0)
Returns undef on failure. The signal must be a number (like
SIGHUP), not a string (like ``SIGHUP''), though Perl does try hard
to understand you.
Examine signals that are blocked and pending. This uses POSIX::SigSet
objects for the sigset argument. Consult your system's sigpending
manpage for details.
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.
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.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 447.
This is identical to Perl's builtin sin() function
for returning the sine of the numerical argument,
see perlfunc/sin. See also the Math::Trig manpage.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 451.
This is functionally identical to Perl's builtin sleep() function
for suspending the execution of the current for process for certain
number of seconds, see perlfunc/sleep. There is one significant
difference, however: POSIX::sleep() returns the number of
unslept seconds, while the CORE::sleep() returns the
number of slept seconds.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 469.
This is identical to the C function strcoll()
for collating (comparing) strings transformed using
the strxfrm() function. Not really needed since
Perl can do this transparently, see perllocale.
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.
If you want your code to be portable, your format (fmt) argument
should use only the conversion specifiers defined by the ANSI C
standard (C89, to play safe). These are aAbBcdHIjmMpSUwWxXyYZ%.
But even then, the results of some of the conversion specifiers are
non-portable. For example, the specifiers aAbBcpZ change according
to the locale settings of the user, and both how to set locales (the locale names) and what output to expect are non-standard.
The specifier c changes according to the timezone settings of the
user and the timezone computation rules of the operating system.
The Z specifier is notoriously unportable since the names of
timezones are non-standard. Sticking to the numeric specifiers is the
safest route.
The given arguments are made consistent as though by calling
mktime() before calling your system's strftime() function,
except that the isdst value is not affected.
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 POSIXsetlocale() settings.
To parse a string $str as a floating point number use
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 510.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 510.
strtok() is C-specific, use regular expressions instead, see
perlre, or perlfunc/split.
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 POSIXsetlocale() settings.
To parse a string $str as a number in some base $base use
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:
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 supply strtoul() parse ``-1'' as a valid value.
This is identical to the C function tcgetpgrp() for returning the
process group identifier of the foreground process group of the controlling
terminal.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 557.
This is identical to Perl's builtin time() function
for returning the number of seconds since the epoch
(whatever it is for the system), see perlfunc/time.
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.
For security reasons, which are probably detailed in your system's
documentation for the C library tmpnam() function, this interface
should not be used; instead see the File::Temp manpage.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 569.
This is identical to the C function, except that it can apply to a single
character or to a whole string. Consider using the lc() function,
see perlfunc/lc, or the equivalent \L operator inside doublequotish
strings.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 571.
This is identical to the C function, except that it can apply to a single
character or to a whole string. Consider using the uc() function,
see perlfunc/uc, or the equivalent \U operator inside doublequotish
strings.
This is identical to the C function tzset() for setting
the current timezone based on the environment variable TZ,
to be used by ctime(), localtime(), mktime(), and strftime()
functions.
Note that the actual meanings of the various fields are not
that well standardized, do not expect any great portability.
The $sysname might be the name of the operating system,
the $nodename might be the name of the host, the $release
might be the (major) release number of the operating system,
the $version might be the (minor) release number of the
operating system, and the $machine might be a hardware identifier.
Maybe.
This is identical to the C function wcstombs().
Perl does not have any support for the wide and multibyte
characters of the C standards, so this might be a rather
useless function.
This is identical to the C function wctomb().
Perl does not have any support for the wide and multibyte
characters of the C standards, so this might be a rather
useless function.
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.
perldoc2tree.cgi: /usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pod: cannot resolve L in paragraph 627.
accessor function for the ``safe signals'' flag of a SigAction object; see
perlipc for general information on safe (a.k.a. ``deferred'') signals. If
you wish to handle a signal safely, use this accessor to set the ``safe'' flag
in the POSIX::SigAction object:
$sigaction->safe(1);
You may also examine the ``safe'' flag on the output action object which is
filled in when given as the third parameter to POSIX::sigaction():
sigaction(SIGINT, $new_action, $old_action);
if ($old_action->safe) {
# previous SIGINT handler used safe signals
}
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.