6586 lines
165 KiB
Diff
6586 lines
165 KiB
Diff
Upstream-Status:Inappropriate [Backport]
|
|
|
|
Imported from perl git tree by Nitin A Kamble <nitin.a.kamble@intel.com>
|
|
2011-02-23
|
|
|
|
commit 4feb80ac47a22e7de7d7c1c1d5dfb3d744a2a3a7
|
|
Author: Jerry D. Hedden <jdhedden@cpan.org>
|
|
Date: Tue Aug 17 13:17:11 2010 -0400
|
|
|
|
Move POSIX.pm to lib/POSIX.pm to fix autosplitter problem
|
|
|
|
diff --git a/MANIFEST b/MANIFEST
|
|
index 3036d73..faf8974 100644
|
|
--- a/MANIFEST
|
|
+++ b/MANIFEST
|
|
@@ -3183,9 +3183,9 @@ ext/POSIX/hints/openbsd.pl Hint for POSIX for named architecture
|
|
ext/POSIX/hints/sunos_4.pl Hint for POSIX for named architecture
|
|
ext/POSIX/hints/svr4.pl Hint for POSIX for named architecture
|
|
ext/POSIX/hints/uts.pl Hint for POSIX for named architecture
|
|
+ext/POSIX/lib/POSIX.pm POSIX extension Perl module
|
|
+ext/POSIX/lib/POSIX.pod POSIX extension documentation
|
|
ext/POSIX/Makefile.PL POSIX extension makefile writer
|
|
-ext/POSIX/POSIX.pm POSIX extension Perl module
|
|
-ext/POSIX/POSIX.pod POSIX extension documentation
|
|
ext/POSIX/POSIX.xs POSIX extension external subroutines
|
|
ext/POSIX/t/is.t See if POSIX isxxx() work
|
|
ext/POSIX/t/math.t Basic math tests for POSIX
|
|
diff --git a/ext/POSIX/Makefile.PL b/ext/POSIX/Makefile.PL
|
|
index 292882c..07c3841 100644
|
|
--- a/ext/POSIX/Makefile.PL
|
|
+++ b/ext/POSIX/Makefile.PL
|
|
@@ -18,7 +18,8 @@ WriteMakefile(
|
|
NAME => 'POSIX',
|
|
@libs,
|
|
XSPROTOARG => '-noprototypes', # XXX remove later?
|
|
- VERSION_FROM => 'POSIX.pm',
|
|
+ VERSION_FROM => 'lib/POSIX.pm',
|
|
+ ABSTRACT_FROM => 'lib/POSIX.pod',
|
|
realclean => {FILES=> 'const-c.inc const-xs.inc'},
|
|
);
|
|
|
|
diff --git a/ext/POSIX/POSIX.pm b/ext/POSIX/POSIX.pm
|
|
deleted file mode 100644
|
|
index ffbd9de..0000000
|
|
--- a/ext/POSIX/POSIX.pm
|
|
+++ /dev/null
|
|
@@ -1,1042 +0,0 @@
|
|
-package POSIX;
|
|
-use strict;
|
|
-use warnings;
|
|
-
|
|
-our(@ISA, %EXPORT_TAGS, @EXPORT_OK, @EXPORT, $AUTOLOAD, %SIGRT) = ();
|
|
-
|
|
-our $VERSION = "1.19";
|
|
-
|
|
-use AutoLoader;
|
|
-
|
|
-use XSLoader ();
|
|
-
|
|
-use Fcntl qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK 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 SEEK_CUR SEEK_END SEEK_SET
|
|
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG
|
|
- 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);
|
|
-
|
|
-# Grandfather old foo_h form to new :foo_h form
|
|
-my $loaded;
|
|
-
|
|
-sub import {
|
|
- load_imports() unless $loaded++;
|
|
- my $this = shift;
|
|
- my @list = map { m/^\w+_h$/ ? ":$_" : $_ } @_;
|
|
- local $Exporter::ExportLevel = 1;
|
|
- Exporter::import($this,@list);
|
|
-}
|
|
-
|
|
-sub croak { require Carp; goto &Carp::croak }
|
|
-# declare usage to assist AutoLoad
|
|
-sub usage;
|
|
-
|
|
-XSLoader::load 'POSIX', $VERSION;
|
|
-
|
|
-sub AUTOLOAD {
|
|
- no strict;
|
|
- no warnings 'uninitialized';
|
|
- if ($AUTOLOAD =~ /::(_?[a-z])/) {
|
|
- # require AutoLoader;
|
|
- $AutoLoader::AUTOLOAD = $AUTOLOAD;
|
|
- goto &AutoLoader::AUTOLOAD
|
|
- }
|
|
- local $! = 0;
|
|
- my $constname = $AUTOLOAD;
|
|
- $constname =~ s/.*:://;
|
|
- my ($error, $val) = constant($constname);
|
|
- croak $error if $error;
|
|
- *$AUTOLOAD = sub { $val };
|
|
-
|
|
- goto &$AUTOLOAD;
|
|
-}
|
|
-
|
|
-package POSIX::SigAction;
|
|
-
|
|
-use AutoLoader 'AUTOLOAD';
|
|
-
|
|
-package POSIX::SigRt;
|
|
-
|
|
-use AutoLoader 'AUTOLOAD';
|
|
-
|
|
-use Tie::Hash;
|
|
-
|
|
-use vars qw($SIGACTION_FLAGS $_SIGRTMIN $_SIGRTMAX $_sigrtn @ISA);
|
|
-@POSIX::SigRt::ISA = qw(Tie::StdHash);
|
|
-
|
|
-$SIGACTION_FLAGS = 0;
|
|
-
|
|
-tie %POSIX::SIGRT, 'POSIX::SigRt';
|
|
-
|
|
-sub DESTROY {};
|
|
-
|
|
-package POSIX;
|
|
-
|
|
-1;
|
|
-__END__
|
|
-
|
|
-sub usage {
|
|
- my ($mess) = @_;
|
|
- croak "Usage: POSIX::$mess";
|
|
-}
|
|
-
|
|
-sub redef {
|
|
- my ($mess) = @_;
|
|
- croak "Use method $mess instead";
|
|
-}
|
|
-
|
|
-sub unimpl {
|
|
- my ($mess) = @_;
|
|
- $mess =~ s/xxx//;
|
|
- croak "Unimplemented: POSIX::$mess";
|
|
-}
|
|
-
|
|
-sub assert {
|
|
- usage "assert(expr)" if @_ != 1;
|
|
- if (!$_[0]) {
|
|
- croak "Assertion failed";
|
|
- }
|
|
-}
|
|
-
|
|
-sub tolower {
|
|
- usage "tolower(string)" if @_ != 1;
|
|
- lc($_[0]);
|
|
-}
|
|
-
|
|
-sub toupper {
|
|
- usage "toupper(string)" if @_ != 1;
|
|
- uc($_[0]);
|
|
-}
|
|
-
|
|
-sub closedir {
|
|
- usage "closedir(dirhandle)" if @_ != 1;
|
|
- CORE::closedir($_[0]);
|
|
-}
|
|
-
|
|
-sub opendir {
|
|
- usage "opendir(directory)" if @_ != 1;
|
|
- my $dirhandle;
|
|
- CORE::opendir($dirhandle, $_[0])
|
|
- ? $dirhandle
|
|
- : undef;
|
|
-}
|
|
-
|
|
-sub readdir {
|
|
- usage "readdir(dirhandle)" if @_ != 1;
|
|
- CORE::readdir($_[0]);
|
|
-}
|
|
-
|
|
-sub rewinddir {
|
|
- usage "rewinddir(dirhandle)" if @_ != 1;
|
|
- CORE::rewinddir($_[0]);
|
|
-}
|
|
-
|
|
-sub errno {
|
|
- usage "errno()" if @_ != 0;
|
|
- $! + 0;
|
|
-}
|
|
-
|
|
-sub creat {
|
|
- usage "creat(filename, mode)" if @_ != 2;
|
|
- &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[1]);
|
|
-}
|
|
-
|
|
-sub fcntl {
|
|
- usage "fcntl(filehandle, cmd, arg)" if @_ != 3;
|
|
- CORE::fcntl($_[0], $_[1], $_[2]);
|
|
-}
|
|
-
|
|
-sub getgrgid {
|
|
- usage "getgrgid(gid)" if @_ != 1;
|
|
- CORE::getgrgid($_[0]);
|
|
-}
|
|
-
|
|
-sub getgrnam {
|
|
- usage "getgrnam(name)" if @_ != 1;
|
|
- CORE::getgrnam($_[0]);
|
|
-}
|
|
-
|
|
-sub atan2 {
|
|
- usage "atan2(x,y)" if @_ != 2;
|
|
- CORE::atan2($_[0], $_[1]);
|
|
-}
|
|
-
|
|
-sub cos {
|
|
- usage "cos(x)" if @_ != 1;
|
|
- CORE::cos($_[0]);
|
|
-}
|
|
-
|
|
-sub exp {
|
|
- usage "exp(x)" if @_ != 1;
|
|
- CORE::exp($_[0]);
|
|
-}
|
|
-
|
|
-sub fabs {
|
|
- usage "fabs(x)" if @_ != 1;
|
|
- CORE::abs($_[0]);
|
|
-}
|
|
-
|
|
-sub log {
|
|
- usage "log(x)" if @_ != 1;
|
|
- CORE::log($_[0]);
|
|
-}
|
|
-
|
|
-sub pow {
|
|
- usage "pow(x,exponent)" if @_ != 2;
|
|
- $_[0] ** $_[1];
|
|
-}
|
|
-
|
|
-sub sin {
|
|
- usage "sin(x)" if @_ != 1;
|
|
- CORE::sin($_[0]);
|
|
-}
|
|
-
|
|
-sub sqrt {
|
|
- usage "sqrt(x)" if @_ != 1;
|
|
- CORE::sqrt($_[0]);
|
|
-}
|
|
-
|
|
-sub getpwnam {
|
|
- usage "getpwnam(name)" if @_ != 1;
|
|
- CORE::getpwnam($_[0]);
|
|
-}
|
|
-
|
|
-sub getpwuid {
|
|
- usage "getpwuid(uid)" if @_ != 1;
|
|
- CORE::getpwuid($_[0]);
|
|
-}
|
|
-
|
|
-sub longjmp {
|
|
- unimpl "longjmp() is C-specific: use die instead";
|
|
-}
|
|
-
|
|
-sub setjmp {
|
|
- unimpl "setjmp() is C-specific: use eval {} instead";
|
|
-}
|
|
-
|
|
-sub siglongjmp {
|
|
- unimpl "siglongjmp() is C-specific: use die instead";
|
|
-}
|
|
-
|
|
-sub sigsetjmp {
|
|
- unimpl "sigsetjmp() is C-specific: use eval {} instead";
|
|
-}
|
|
-
|
|
-sub kill {
|
|
- usage "kill(pid, sig)" if @_ != 2;
|
|
- CORE::kill $_[1], $_[0];
|
|
-}
|
|
-
|
|
-sub raise {
|
|
- usage "raise(sig)" if @_ != 1;
|
|
- CORE::kill $_[0], $$; # Is this good enough?
|
|
-}
|
|
-
|
|
-sub offsetof {
|
|
- unimpl "offsetof() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub clearerr {
|
|
- redef "IO::Handle::clearerr()";
|
|
-}
|
|
-
|
|
-sub fclose {
|
|
- redef "IO::Handle::close()";
|
|
-}
|
|
-
|
|
-sub fdopen {
|
|
- redef "IO::Handle::new_from_fd()";
|
|
-}
|
|
-
|
|
-sub feof {
|
|
- redef "IO::Handle::eof()";
|
|
-}
|
|
-
|
|
-sub fgetc {
|
|
- redef "IO::Handle::getc()";
|
|
-}
|
|
-
|
|
-sub fgets {
|
|
- redef "IO::Handle::gets()";
|
|
-}
|
|
-
|
|
-sub fileno {
|
|
- redef "IO::Handle::fileno()";
|
|
-}
|
|
-
|
|
-sub fopen {
|
|
- redef "IO::File::open()";
|
|
-}
|
|
-
|
|
-sub fprintf {
|
|
- unimpl "fprintf() is C-specific--use printf instead";
|
|
-}
|
|
-
|
|
-sub fputc {
|
|
- unimpl "fputc() is C-specific--use print instead";
|
|
-}
|
|
-
|
|
-sub fputs {
|
|
- unimpl "fputs() is C-specific--use print instead";
|
|
-}
|
|
-
|
|
-sub fread {
|
|
- unimpl "fread() is C-specific--use read instead";
|
|
-}
|
|
-
|
|
-sub freopen {
|
|
- unimpl "freopen() is C-specific--use open instead";
|
|
-}
|
|
-
|
|
-sub fscanf {
|
|
- unimpl "fscanf() is C-specific--use <> and regular expressions instead";
|
|
-}
|
|
-
|
|
-sub fseek {
|
|
- redef "IO::Seekable::seek()";
|
|
-}
|
|
-
|
|
-sub fsync {
|
|
- redef "IO::Handle::sync()";
|
|
-}
|
|
-
|
|
-sub ferror {
|
|
- redef "IO::Handle::error()";
|
|
-}
|
|
-
|
|
-sub fflush {
|
|
- redef "IO::Handle::flush()";
|
|
-}
|
|
-
|
|
-sub fgetpos {
|
|
- redef "IO::Seekable::getpos()";
|
|
-}
|
|
-
|
|
-sub fsetpos {
|
|
- redef "IO::Seekable::setpos()";
|
|
-}
|
|
-
|
|
-sub ftell {
|
|
- redef "IO::Seekable::tell()";
|
|
-}
|
|
-
|
|
-sub fwrite {
|
|
- unimpl "fwrite() is C-specific--use print instead";
|
|
-}
|
|
-
|
|
-sub getc {
|
|
- usage "getc(handle)" if @_ != 1;
|
|
- CORE::getc($_[0]);
|
|
-}
|
|
-
|
|
-sub getchar {
|
|
- usage "getchar()" if @_ != 0;
|
|
- CORE::getc(STDIN);
|
|
-}
|
|
-
|
|
-sub gets {
|
|
- usage "gets()" if @_ != 0;
|
|
- scalar <STDIN>;
|
|
-}
|
|
-
|
|
-sub perror {
|
|
- print STDERR "@_: " if @_;
|
|
- print STDERR $!,"\n";
|
|
-}
|
|
-
|
|
-sub printf {
|
|
- usage "printf(pattern, args...)" if @_ < 1;
|
|
- CORE::printf STDOUT @_;
|
|
-}
|
|
-
|
|
-sub putc {
|
|
- unimpl "putc() is C-specific--use print instead";
|
|
-}
|
|
-
|
|
-sub putchar {
|
|
- unimpl "putchar() is C-specific--use print instead";
|
|
-}
|
|
-
|
|
-sub puts {
|
|
- unimpl "puts() is C-specific--use print instead";
|
|
-}
|
|
-
|
|
-sub remove {
|
|
- usage "remove(filename)" if @_ != 1;
|
|
- (-d $_[0]) ? CORE::rmdir($_[0]) : CORE::unlink($_[0]);
|
|
-}
|
|
-
|
|
-sub rename {
|
|
- usage "rename(oldfilename, newfilename)" if @_ != 2;
|
|
- CORE::rename($_[0], $_[1]);
|
|
-}
|
|
-
|
|
-sub rewind {
|
|
- usage "rewind(filehandle)" if @_ != 1;
|
|
- CORE::seek($_[0],0,0);
|
|
-}
|
|
-
|
|
-sub scanf {
|
|
- unimpl "scanf() is C-specific--use <> and regular expressions instead";
|
|
-}
|
|
-
|
|
-sub sprintf {
|
|
- usage "sprintf(pattern,args)" if @_ == 0;
|
|
- CORE::sprintf(shift,@_);
|
|
-}
|
|
-
|
|
-sub sscanf {
|
|
- unimpl "sscanf() is C-specific--use regular expressions instead";
|
|
-}
|
|
-
|
|
-sub tmpfile {
|
|
- redef "IO::File::new_tmpfile()";
|
|
-}
|
|
-
|
|
-sub ungetc {
|
|
- redef "IO::Handle::ungetc()";
|
|
-}
|
|
-
|
|
-sub vfprintf {
|
|
- unimpl "vfprintf() is C-specific";
|
|
-}
|
|
-
|
|
-sub vprintf {
|
|
- unimpl "vprintf() is C-specific";
|
|
-}
|
|
-
|
|
-sub vsprintf {
|
|
- unimpl "vsprintf() is C-specific";
|
|
-}
|
|
-
|
|
-sub abs {
|
|
- usage "abs(x)" if @_ != 1;
|
|
- CORE::abs($_[0]);
|
|
-}
|
|
-
|
|
-sub atexit {
|
|
- unimpl "atexit() is C-specific: use END {} instead";
|
|
-}
|
|
-
|
|
-sub atof {
|
|
- unimpl "atof() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub atoi {
|
|
- unimpl "atoi() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub atol {
|
|
- unimpl "atol() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub bsearch {
|
|
- unimpl "bsearch() not supplied";
|
|
-}
|
|
-
|
|
-sub calloc {
|
|
- unimpl "calloc() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub div {
|
|
- unimpl "div() is C-specific, use /, % and int instead";
|
|
-}
|
|
-
|
|
-sub exit {
|
|
- usage "exit(status)" if @_ != 1;
|
|
- CORE::exit($_[0]);
|
|
-}
|
|
-
|
|
-sub free {
|
|
- unimpl "free() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub getenv {
|
|
- usage "getenv(name)" if @_ != 1;
|
|
- $ENV{$_[0]};
|
|
-}
|
|
-
|
|
-sub labs {
|
|
- unimpl "labs() is C-specific, use abs instead";
|
|
-}
|
|
-
|
|
-sub ldiv {
|
|
- unimpl "ldiv() is C-specific, use /, % and int instead";
|
|
-}
|
|
-
|
|
-sub malloc {
|
|
- unimpl "malloc() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub qsort {
|
|
- unimpl "qsort() is C-specific, use sort instead";
|
|
-}
|
|
-
|
|
-sub rand {
|
|
- unimpl "rand() is non-portable, use Perl's rand instead";
|
|
-}
|
|
-
|
|
-sub realloc {
|
|
- unimpl "realloc() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub srand {
|
|
- unimpl "srand()";
|
|
-}
|
|
-
|
|
-sub system {
|
|
- usage "system(command)" if @_ != 1;
|
|
- CORE::system($_[0]);
|
|
-}
|
|
-
|
|
-sub memchr {
|
|
- unimpl "memchr() is C-specific, use index() instead";
|
|
-}
|
|
-
|
|
-sub memcmp {
|
|
- unimpl "memcmp() is C-specific, use eq instead";
|
|
-}
|
|
-
|
|
-sub memcpy {
|
|
- unimpl "memcpy() is C-specific, use = instead";
|
|
-}
|
|
-
|
|
-sub memmove {
|
|
- unimpl "memmove() is C-specific, use = instead";
|
|
-}
|
|
-
|
|
-sub memset {
|
|
- unimpl "memset() is C-specific, use x instead";
|
|
-}
|
|
-
|
|
-sub strcat {
|
|
- unimpl "strcat() is C-specific, use .= instead";
|
|
-}
|
|
-
|
|
-sub strchr {
|
|
- unimpl "strchr() is C-specific, use index() instead";
|
|
-}
|
|
-
|
|
-sub strcmp {
|
|
- unimpl "strcmp() is C-specific, use eq instead";
|
|
-}
|
|
-
|
|
-sub strcpy {
|
|
- unimpl "strcpy() is C-specific, use = instead";
|
|
-}
|
|
-
|
|
-sub strcspn {
|
|
- unimpl "strcspn() is C-specific, use regular expressions instead";
|
|
-}
|
|
-
|
|
-sub strerror {
|
|
- usage "strerror(errno)" if @_ != 1;
|
|
- local $! = $_[0];
|
|
- $! . "";
|
|
-}
|
|
-
|
|
-sub strlen {
|
|
- unimpl "strlen() is C-specific, use length instead";
|
|
-}
|
|
-
|
|
-sub strncat {
|
|
- unimpl "strncat() is C-specific, use .= instead";
|
|
-}
|
|
-
|
|
-sub strncmp {
|
|
- unimpl "strncmp() is C-specific, use eq instead";
|
|
-}
|
|
-
|
|
-sub strncpy {
|
|
- unimpl "strncpy() is C-specific, use = instead";
|
|
-}
|
|
-
|
|
-sub strpbrk {
|
|
- unimpl "strpbrk() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub strrchr {
|
|
- unimpl "strrchr() is C-specific, use rindex() instead";
|
|
-}
|
|
-
|
|
-sub strspn {
|
|
- unimpl "strspn() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub strstr {
|
|
- usage "strstr(big, little)" if @_ != 2;
|
|
- CORE::index($_[0], $_[1]);
|
|
-}
|
|
-
|
|
-sub strtok {
|
|
- unimpl "strtok() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub chmod {
|
|
- usage "chmod(mode, filename)" if @_ != 2;
|
|
- CORE::chmod($_[0], $_[1]);
|
|
-}
|
|
-
|
|
-sub fstat {
|
|
- usage "fstat(fd)" if @_ != 1;
|
|
- local *TMP;
|
|
- CORE::open(TMP, "<&$_[0]"); # Gross.
|
|
- my @l = CORE::stat(TMP);
|
|
- CORE::close(TMP);
|
|
- @l;
|
|
-}
|
|
-
|
|
-sub mkdir {
|
|
- usage "mkdir(directoryname, mode)" if @_ != 2;
|
|
- CORE::mkdir($_[0], $_[1]);
|
|
-}
|
|
-
|
|
-sub stat {
|
|
- usage "stat(filename)" if @_ != 1;
|
|
- CORE::stat($_[0]);
|
|
-}
|
|
-
|
|
-sub umask {
|
|
- usage "umask(mask)" if @_ != 1;
|
|
- CORE::umask($_[0]);
|
|
-}
|
|
-
|
|
-sub wait {
|
|
- usage "wait()" if @_ != 0;
|
|
- CORE::wait();
|
|
-}
|
|
-
|
|
-sub waitpid {
|
|
- usage "waitpid(pid, options)" if @_ != 2;
|
|
- CORE::waitpid($_[0], $_[1]);
|
|
-}
|
|
-
|
|
-sub gmtime {
|
|
- usage "gmtime(time)" if @_ != 1;
|
|
- CORE::gmtime($_[0]);
|
|
-}
|
|
-
|
|
-sub localtime {
|
|
- usage "localtime(time)" if @_ != 1;
|
|
- CORE::localtime($_[0]);
|
|
-}
|
|
-
|
|
-sub time {
|
|
- usage "time()" if @_ != 0;
|
|
- CORE::time;
|
|
-}
|
|
-
|
|
-sub alarm {
|
|
- usage "alarm(seconds)" if @_ != 1;
|
|
- CORE::alarm($_[0]);
|
|
-}
|
|
-
|
|
-sub chdir {
|
|
- usage "chdir(directory)" if @_ != 1;
|
|
- CORE::chdir($_[0]);
|
|
-}
|
|
-
|
|
-sub chown {
|
|
- usage "chown(uid, gid, filename)" if @_ != 3;
|
|
- CORE::chown($_[0], $_[1], $_[2]);
|
|
-}
|
|
-
|
|
-sub execl {
|
|
- unimpl "execl() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub execle {
|
|
- unimpl "execle() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub execlp {
|
|
- unimpl "execlp() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub execv {
|
|
- unimpl "execv() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub execve {
|
|
- unimpl "execve() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub execvp {
|
|
- unimpl "execvp() is C-specific, stopped";
|
|
-}
|
|
-
|
|
-sub fork {
|
|
- usage "fork()" if @_ != 0;
|
|
- CORE::fork;
|
|
-}
|
|
-
|
|
-sub getegid {
|
|
- usage "getegid()" if @_ != 0;
|
|
- $) + 0;
|
|
-}
|
|
-
|
|
-sub geteuid {
|
|
- usage "geteuid()" if @_ != 0;
|
|
- $> + 0;
|
|
-}
|
|
-
|
|
-sub getgid {
|
|
- usage "getgid()" if @_ != 0;
|
|
- $( + 0;
|
|
-}
|
|
-
|
|
-sub getgroups {
|
|
- usage "getgroups()" if @_ != 0;
|
|
- my %seen;
|
|
- grep(!$seen{$_}++, split(' ', $) ));
|
|
-}
|
|
-
|
|
-sub getlogin {
|
|
- usage "getlogin()" if @_ != 0;
|
|
- CORE::getlogin();
|
|
-}
|
|
-
|
|
-sub getpgrp {
|
|
- usage "getpgrp()" if @_ != 0;
|
|
- CORE::getpgrp;
|
|
-}
|
|
-
|
|
-sub getpid {
|
|
- usage "getpid()" if @_ != 0;
|
|
- $$;
|
|
-}
|
|
-
|
|
-sub getppid {
|
|
- usage "getppid()" if @_ != 0;
|
|
- CORE::getppid;
|
|
-}
|
|
-
|
|
-sub getuid {
|
|
- usage "getuid()" if @_ != 0;
|
|
- $<;
|
|
-}
|
|
-
|
|
-sub isatty {
|
|
- usage "isatty(filehandle)" if @_ != 1;
|
|
- -t $_[0];
|
|
-}
|
|
-
|
|
-sub link {
|
|
- usage "link(oldfilename, newfilename)" if @_ != 2;
|
|
- CORE::link($_[0], $_[1]);
|
|
-}
|
|
-
|
|
-sub rmdir {
|
|
- usage "rmdir(directoryname)" if @_ != 1;
|
|
- CORE::rmdir($_[0]);
|
|
-}
|
|
-
|
|
-sub setbuf {
|
|
- redef "IO::Handle::setbuf()";
|
|
-}
|
|
-
|
|
-sub setvbuf {
|
|
- redef "IO::Handle::setvbuf()";
|
|
-}
|
|
-
|
|
-sub sleep {
|
|
- usage "sleep(seconds)" if @_ != 1;
|
|
- $_[0] - CORE::sleep($_[0]);
|
|
-}
|
|
-
|
|
-sub unlink {
|
|
- usage "unlink(filename)" if @_ != 1;
|
|
- CORE::unlink($_[0]);
|
|
-}
|
|
-
|
|
-sub utime {
|
|
- usage "utime(filename, atime, mtime)" if @_ != 3;
|
|
- CORE::utime($_[1], $_[2], $_[0]);
|
|
-}
|
|
-
|
|
-sub load_imports {
|
|
-%EXPORT_TAGS = (
|
|
-
|
|
- assert_h => [qw(assert NDEBUG)],
|
|
-
|
|
- ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower
|
|
- isprint ispunct isspace isupper isxdigit tolower toupper)],
|
|
-
|
|
- dirent_h => [],
|
|
-
|
|
- errno_h => [qw(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 errno)],
|
|
-
|
|
- fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK 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
|
|
- creat
|
|
- SEEK_CUR SEEK_END SEEK_SET
|
|
- S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
|
|
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID
|
|
- S_IWGRP S_IWOTH S_IWUSR)],
|
|
-
|
|
- float_h => [qw(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)],
|
|
-
|
|
- grp_h => [],
|
|
-
|
|
- limits_h => [qw( 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 _POSIX_ARG_MAX _POSIX_CHILD_MAX
|
|
- _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT
|
|
- _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX
|
|
- _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX
|
|
- _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)],
|
|
-
|
|
- locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES
|
|
- LC_MONETARY LC_NUMERIC LC_TIME NULL
|
|
- localeconv setlocale)],
|
|
-
|
|
- math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod
|
|
- frexp ldexp log10 modf pow sinh tan tanh)],
|
|
-
|
|
- pwd_h => [],
|
|
-
|
|
- setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)],
|
|
-
|
|
- signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK
|
|
- SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM
|
|
- SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL
|
|
- SIGPIPE %SIGRT SIGRTMIN SIGRTMAX SIGQUIT SIGSEGV SIGSTOP
|
|
- SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2
|
|
- SIG_BLOCK SIG_DFL SIG_ERR SIG_IGN SIG_SETMASK SIG_UNBLOCK
|
|
- raise sigaction signal sigpending sigprocmask sigsuspend)],
|
|
-
|
|
- stdarg_h => [],
|
|
-
|
|
- stddef_h => [qw(NULL offsetof)],
|
|
-
|
|
- stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid
|
|
- L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET
|
|
- STREAM_MAX TMP_MAX stderr stdin stdout
|
|
- clearerr fclose fdopen feof ferror fflush fgetc fgetpos
|
|
- fgets fopen fprintf fputc fputs fread freopen
|
|
- fscanf fseek fsetpos ftell fwrite getchar gets
|
|
- perror putc putchar puts remove rewind
|
|
- scanf setbuf setvbuf sscanf tmpfile tmpnam
|
|
- ungetc vfprintf vprintf vsprintf)],
|
|
-
|
|
- stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX
|
|
- abort atexit atof atoi atol bsearch calloc div
|
|
- free getenv labs ldiv malloc mblen mbstowcs mbtowc
|
|
- qsort realloc strtod strtol strtoul wcstombs wctomb)],
|
|
-
|
|
- string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat
|
|
- strchr strcmp strcoll strcpy strcspn strerror strlen
|
|
- strncat strncmp strncpy strpbrk strrchr strspn strstr
|
|
- strtok strxfrm)],
|
|
-
|
|
- sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
|
|
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG
|
|
- S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR
|
|
- fstat mkfifo)],
|
|
-
|
|
- sys_times_h => [],
|
|
-
|
|
- sys_types_h => [],
|
|
-
|
|
- sys_utsname_h => [qw(uname)],
|
|
-
|
|
- sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED
|
|
- WNOHANG WSTOPSIG WTERMSIG WUNTRACED)],
|
|
-
|
|
- termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400
|
|
- B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL
|
|
- CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK
|
|
- ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR
|
|
- INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST
|
|
- PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION
|
|
- TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW
|
|
- TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART
|
|
- VSTOP VSUSP VTIME
|
|
- cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain
|
|
- tcflow tcflush tcgetattr tcsendbreak tcsetattr )],
|
|
-
|
|
- time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime
|
|
- difftime mktime strftime tzset tzname)],
|
|
-
|
|
- unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET
|
|
- STDERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK
|
|
- _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_CHOWN_RESTRICTED
|
|
- _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS
|
|
- _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX
|
|
- _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL
|
|
- _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS
|
|
- _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
|
|
- _exit access ctermid cuserid
|
|
- dup2 dup execl execle execlp execv execve execvp
|
|
- fpathconf fsync getcwd getegid geteuid getgid getgroups
|
|
- getpid getuid isatty lseek pathconf pause setgid setpgid
|
|
- setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)],
|
|
-
|
|
- utime_h => [],
|
|
-
|
|
-);
|
|
-
|
|
-# Exporter::export_tags();
|
|
-{
|
|
- # De-duplicate the export list:
|
|
- my %export;
|
|
- @export{map {@$_} values %EXPORT_TAGS} = ();
|
|
- # Doing the de-dup with a temporary hash has the advantage that the SVs in
|
|
- # @EXPORT are actually shared hash key sacalars, which will save some memory.
|
|
- push @EXPORT, keys %export;
|
|
-}
|
|
-
|
|
-@EXPORT_OK = qw(
|
|
- abs
|
|
- alarm
|
|
- atan2
|
|
- chdir
|
|
- chmod
|
|
- chown
|
|
- close
|
|
- closedir
|
|
- cos
|
|
- exit
|
|
- exp
|
|
- fcntl
|
|
- fileno
|
|
- fork
|
|
- getc
|
|
- getgrgid
|
|
- getgrnam
|
|
- getlogin
|
|
- getpgrp
|
|
- getppid
|
|
- getpwnam
|
|
- getpwuid
|
|
- gmtime
|
|
- isatty
|
|
- kill
|
|
- lchown
|
|
- link
|
|
- localtime
|
|
- log
|
|
- mkdir
|
|
- nice
|
|
- open
|
|
- opendir
|
|
- pipe
|
|
- printf
|
|
- rand
|
|
- read
|
|
- readdir
|
|
- rename
|
|
- rewinddir
|
|
- rmdir
|
|
- sin
|
|
- sleep
|
|
- sprintf
|
|
- sqrt
|
|
- srand
|
|
- stat
|
|
- system
|
|
- time
|
|
- times
|
|
- umask
|
|
- unlink
|
|
- utime
|
|
- wait
|
|
- waitpid
|
|
- write
|
|
-);
|
|
-
|
|
-require Exporter;
|
|
-}
|
|
-
|
|
-package POSIX::SigAction;
|
|
-
|
|
-sub new { bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3] || 0, SAFE => 0}, $_[0] }
|
|
-sub handler { $_[0]->{HANDLER} = $_[1] if @_ > 1; $_[0]->{HANDLER} };
|
|
-sub mask { $_[0]->{MASK} = $_[1] if @_ > 1; $_[0]->{MASK} };
|
|
-sub flags { $_[0]->{FLAGS} = $_[1] if @_ > 1; $_[0]->{FLAGS} };
|
|
-sub safe { $_[0]->{SAFE} = $_[1] if @_ > 1; $_[0]->{SAFE} };
|
|
-
|
|
-package POSIX::SigRt;
|
|
-
|
|
-
|
|
-sub _init {
|
|
- $_SIGRTMIN = &POSIX::SIGRTMIN;
|
|
- $_SIGRTMAX = &POSIX::SIGRTMAX;
|
|
- $_sigrtn = $_SIGRTMAX - $_SIGRTMIN;
|
|
-}
|
|
-
|
|
-sub _croak {
|
|
- &_init unless defined $_sigrtn;
|
|
- die "POSIX::SigRt not available" unless defined $_sigrtn && $_sigrtn > 0;
|
|
-}
|
|
-
|
|
-sub _getsig {
|
|
- &_croak;
|
|
- my $rtsig = $_[0];
|
|
- # Allow (SIGRT)?MIN( + n)?, a common idiom when doing these things in C.
|
|
- $rtsig = $_SIGRTMIN + ($1 || 0)
|
|
- if $rtsig =~ /^(?:(?:SIG)?RT)?MIN(\s*\+\s*(\d+))?$/;
|
|
- return $rtsig;
|
|
-}
|
|
-
|
|
-sub _exist {
|
|
- my $rtsig = _getsig($_[1]);
|
|
- my $ok = $rtsig >= $_SIGRTMIN && $rtsig <= $_SIGRTMAX;
|
|
- ($rtsig, $ok);
|
|
-}
|
|
-
|
|
-sub _check {
|
|
- my ($rtsig, $ok) = &_exist;
|
|
- die "No POSIX::SigRt signal $_[1] (valid range SIGRTMIN..SIGRTMAX, or $_SIGRTMIN..$_SIGRTMAX)"
|
|
- unless $ok;
|
|
- return $rtsig;
|
|
-}
|
|
-
|
|
-sub new {
|
|
- my ($rtsig, $handler, $flags) = @_;
|
|
- my $sigset = POSIX::SigSet->new($rtsig);
|
|
- my $sigact = POSIX::SigAction->new($handler,
|
|
- $sigset,
|
|
- $flags);
|
|
- POSIX::sigaction($rtsig, $sigact);
|
|
-}
|
|
-
|
|
-sub EXISTS { &_exist }
|
|
-sub FETCH { my $rtsig = &_check;
|
|
- my $oa = POSIX::SigAction->new();
|
|
- POSIX::sigaction($rtsig, undef, $oa);
|
|
- return $oa->{HANDLER} }
|
|
-sub STORE { my $rtsig = &_check; new($rtsig, $_[2], $SIGACTION_FLAGS) }
|
|
-sub DELETE { delete $SIG{ &_check } }
|
|
-sub CLEAR { &_exist; delete @SIG{ &POSIX::SIGRTMIN .. &POSIX::SIGRTMAX } }
|
|
-sub SCALAR { &_croak; $_sigrtn + 1 }
|
|
diff --git a/ext/POSIX/POSIX.pod b/ext/POSIX/POSIX.pod
|
|
deleted file mode 100644
|
|
index 64852e9..0000000
|
|
--- a/ext/POSIX/POSIX.pod
|
|
+++ /dev/null
|
|
@@ -1,2218 +0,0 @@
|
|
-=head1 NAME
|
|
-
|
|
-POSIX - Perl interface to IEEE Std 1003.1
|
|
-
|
|
-=head1 SYNOPSIS
|
|
-
|
|
- 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
|
|
-
|
|
-=head1 DESCRIPTION
|
|
-
|
|
-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.
|
|
-
|
|
-I<Everything is exported by default> with the exception of any POSIX
|
|
-functions with the same name as a built-in Perl function, such as
|
|
-C<abs>, C<alarm>, C<rmdir>, C<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 C<use
|
|
-POSIX ()> and then use the fully qualified names (ie. C<POSIX::SEEK_END>).
|
|
-
|
|
-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 L<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.
|
|
-
|
|
-=head1 NOTE
|
|
-
|
|
-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.
|
|
-
|
|
-=head1 CAVEATS
|
|
-
|
|
-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.
|
|
-
|
|
-=head1 FUNCTIONS
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item _exit
|
|
-
|
|
-This is identical to the C function C<_exit()>. It exits the program
|
|
-immediately which means among other things buffered I/O is B<not> flushed.
|
|
-
|
|
-Note that when using threads and in Linux this is B<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.
|
|
-
|
|
-=item abort
|
|
-
|
|
-This is identical to the C function C<abort()>. It terminates the
|
|
-process with a C<SIGABRT> signal unless caught by a signal handler or
|
|
-if the handler does not return normally (it e.g. does a C<longjmp>).
|
|
-
|
|
-=item abs
|
|
-
|
|
-This is identical to Perl's builtin C<abs()> function, returning
|
|
-the absolute value of its numerical argument.
|
|
-
|
|
-=item access
|
|
-
|
|
-Determines the accessibility of a file.
|
|
-
|
|
- if( POSIX::access( "/", &POSIX::R_OK ) ){
|
|
- print "have read permission\n";
|
|
- }
|
|
-
|
|
-Returns C<undef> on failure. Note: do not use C<access()> for
|
|
-security purposes. Between the C<access()> call and the operation
|
|
-you are preparing for the permissions might change: a classic
|
|
-I<race condition>.
|
|
-
|
|
-=item acos
|
|
-
|
|
-This is identical to the C function C<acos()>, returning
|
|
-the arcus cosine of its numerical argument. See also L<Math::Trig>.
|
|
-
|
|
-=item alarm
|
|
-
|
|
-This is identical to Perl's builtin C<alarm()> function,
|
|
-either for arming or disarming the C<SIGARLM> timer.
|
|
-
|
|
-=item asctime
|
|
-
|
|
-This is identical to the C function C<asctime()>. It returns
|
|
-a string of the form
|
|
-
|
|
- "Fri Jun 2 18:22:13 2000\n\0"
|
|
-
|
|
-and it is called thusly
|
|
-
|
|
- $asctime = asctime($sec, $min, $hour, $mday, $mon, $year,
|
|
- $wday, $yday, $isdst);
|
|
-
|
|
-The C<$mon> is zero-based: January equals C<0>. The C<$year> is
|
|
-1900-based: 2001 equals C<101>. C<$wday> and C<$yday> default to zero
|
|
-(and are usually ignored anyway), and C<$isdst> defaults to -1.
|
|
-
|
|
-=item asin
|
|
-
|
|
-This is identical to the C function C<asin()>, returning
|
|
-the arcus sine of its numerical argument. See also L<Math::Trig>.
|
|
-
|
|
-=item assert
|
|
-
|
|
-Unimplemented, but you can use L<perlfunc/die> and the L<Carp> module
|
|
-to achieve similar things.
|
|
-
|
|
-=item atan
|
|
-
|
|
-This is identical to the C function C<atan()>, returning the
|
|
-arcus tangent of its numerical argument. See also L<Math::Trig>.
|
|
-
|
|
-=item atan2
|
|
-
|
|
-This is identical to Perl's builtin C<atan2()> function, returning
|
|
-the arcus tangent defined by its two numerical arguments, the I<y>
|
|
-coordinate and the I<x> coordinate. See also L<Math::Trig>.
|
|
-
|
|
-=item atexit
|
|
-
|
|
-atexit() is C-specific: use C<END {}> instead, see L<perlsub>.
|
|
-
|
|
-=item atof
|
|
-
|
|
-atof() is C-specific. Perl converts strings to numbers transparently.
|
|
-If you need to force a scalar to a number, add a zero to it.
|
|
-
|
|
-=item atoi
|
|
-
|
|
-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 L<perlfunc/int>.
|
|
-
|
|
-=item atol
|
|
-
|
|
-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 L<perlfunc/int>.
|
|
-
|
|
-=item bsearch
|
|
-
|
|
-bsearch() not supplied. For doing binary search on wordlists,
|
|
-see L<Search::Dict>.
|
|
-
|
|
-=item calloc
|
|
-
|
|
-calloc() is C-specific. Perl does memory management transparently.
|
|
-
|
|
-=item ceil
|
|
-
|
|
-This is identical to the C function C<ceil()>, returning the smallest
|
|
-integer value greater than or equal to the given numerical argument.
|
|
-
|
|
-=item chdir
|
|
-
|
|
-This is identical to Perl's builtin C<chdir()> function, allowing
|
|
-one to change the working (default) directory, see L<perlfunc/chdir>.
|
|
-
|
|
-=item chmod
|
|
-
|
|
-This is identical to Perl's builtin C<chmod()> function, allowing
|
|
-one to change file and directory permissions, see L<perlfunc/chmod>.
|
|
-
|
|
-=item chown
|
|
-
|
|
-This is identical to Perl's builtin C<chown()> function, allowing one
|
|
-to change file and directory owners and groups, see L<perlfunc/chown>.
|
|
-
|
|
-=item clearerr
|
|
-
|
|
-Use the method C<IO::Handle::clearerr()> instead, to reset the error
|
|
-state (if any) and EOF state (if any) of the given stream.
|
|
-
|
|
-=item clock
|
|
-
|
|
-This is identical to the C function C<clock()>, returning the
|
|
-amount of spent processor time in microseconds.
|
|
-
|
|
-=item close
|
|
-
|
|
-Close the file. This uses file descriptors such as those obtained by calling
|
|
-C<POSIX::open>.
|
|
-
|
|
- $fd = POSIX::open( "foo", &POSIX::O_RDONLY );
|
|
- POSIX::close( $fd );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-See also L<perlfunc/close>.
|
|
-
|
|
-=item closedir
|
|
-
|
|
-This is identical to Perl's builtin C<closedir()> function for closing
|
|
-a directory handle, see L<perlfunc/closedir>.
|
|
-
|
|
-=item cos
|
|
-
|
|
-This is identical to Perl's builtin C<cos()> function, for returning
|
|
-the cosine of its numerical argument, see L<perlfunc/cos>.
|
|
-See also L<Math::Trig>.
|
|
-
|
|
-=item cosh
|
|
-
|
|
-This is identical to the C function C<cosh()>, for returning
|
|
-the hyperbolic cosine of its numeric argument. See also L<Math::Trig>.
|
|
-
|
|
-=item creat
|
|
-
|
|
-Create a new file. This returns a file descriptor like the ones returned by
|
|
-C<POSIX::open>. Use C<POSIX::close> to close the file.
|
|
-
|
|
- $fd = POSIX::creat( "foo", 0611 );
|
|
- POSIX::close( $fd );
|
|
-
|
|
-See also L<perlfunc/sysopen> and its C<O_CREAT> flag.
|
|
-
|
|
-=item ctermid
|
|
-
|
|
-Generates the path name for the controlling terminal.
|
|
-
|
|
- $path = POSIX::ctermid();
|
|
-
|
|
-=item ctime
|
|
-
|
|
-This is identical to the C function C<ctime()> and equivalent
|
|
-to C<asctime(localtime(...))>, see L</asctime> and L</localtime>.
|
|
-
|
|
-=item cuserid
|
|
-
|
|
-Get the login name of the owner of the current process.
|
|
-
|
|
- $name = POSIX::cuserid();
|
|
-
|
|
-=item difftime
|
|
-
|
|
-This is identical to the C function C<difftime()>, for returning
|
|
-the time difference (in seconds) between two times (as returned
|
|
-by C<time()>), see L</time>.
|
|
-
|
|
-=item div
|
|
-
|
|
-div() is C-specific, use L<perlfunc/int> on the usual C</> division and
|
|
-the modulus C<%>.
|
|
-
|
|
-=item dup
|
|
-
|
|
-This is similar to the C function C<dup()>, for duplicating a file
|
|
-descriptor.
|
|
-
|
|
-This uses file descriptors such as those obtained by calling
|
|
-C<POSIX::open>.
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item dup2
|
|
-
|
|
-This is similar to the C function C<dup2()>, for duplicating a file
|
|
-descriptor to an another known file descriptor.
|
|
-
|
|
-This uses file descriptors such as those obtained by calling
|
|
-C<POSIX::open>.
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item errno
|
|
-
|
|
-Returns the value of errno.
|
|
-
|
|
- $errno = POSIX::errno();
|
|
-
|
|
-This identical to the numerical values of the C<$!>, see L<perlvar/$ERRNO>.
|
|
-
|
|
-=item execl
|
|
-
|
|
-execl() is C-specific, see L<perlfunc/exec>.
|
|
-
|
|
-=item execle
|
|
-
|
|
-execle() is C-specific, see L<perlfunc/exec>.
|
|
-
|
|
-=item execlp
|
|
-
|
|
-execlp() is C-specific, see L<perlfunc/exec>.
|
|
-
|
|
-=item execv
|
|
-
|
|
-execv() is C-specific, see L<perlfunc/exec>.
|
|
-
|
|
-=item execve
|
|
-
|
|
-execve() is C-specific, see L<perlfunc/exec>.
|
|
-
|
|
-=item execvp
|
|
-
|
|
-execvp() is C-specific, see L<perlfunc/exec>.
|
|
-
|
|
-=item exit
|
|
-
|
|
-This is identical to Perl's builtin C<exit()> function for exiting the
|
|
-program, see L<perlfunc/exit>.
|
|
-
|
|
-=item exp
|
|
-
|
|
-This is identical to Perl's builtin C<exp()> function for
|
|
-returning the exponent (I<e>-based) of the numerical argument,
|
|
-see L<perlfunc/exp>.
|
|
-
|
|
-=item fabs
|
|
-
|
|
-This is identical to Perl's builtin C<abs()> function for returning
|
|
-the absolute value of the numerical argument, see L<perlfunc/abs>.
|
|
-
|
|
-=item fclose
|
|
-
|
|
-Use method C<IO::Handle::close()> instead, or see L<perlfunc/close>.
|
|
-
|
|
-=item fcntl
|
|
-
|
|
-This is identical to Perl's builtin C<fcntl()> function,
|
|
-see L<perlfunc/fcntl>.
|
|
-
|
|
-=item fdopen
|
|
-
|
|
-Use method C<IO::Handle::new_from_fd()> instead, or see L<perlfunc/open>.
|
|
-
|
|
-=item feof
|
|
-
|
|
-Use method C<IO::Handle::eof()> instead, or see L<perlfunc/eof>.
|
|
-
|
|
-=item ferror
|
|
-
|
|
-Use method C<IO::Handle::error()> instead.
|
|
-
|
|
-=item fflush
|
|
-
|
|
-Use method C<IO::Handle::flush()> instead.
|
|
-See also L<perlvar/$OUTPUT_AUTOFLUSH>.
|
|
-
|
|
-=item fgetc
|
|
-
|
|
-Use method C<IO::Handle::getc()> instead, or see L<perlfunc/read>.
|
|
-
|
|
-=item fgetpos
|
|
-
|
|
-Use method C<IO::Seekable::getpos()> instead, or see L<L/seek>.
|
|
-
|
|
-=item fgets
|
|
-
|
|
-Use method C<IO::Handle::gets()> instead. Similar to E<lt>E<gt>, also known
|
|
-as L<perlfunc/readline>.
|
|
-
|
|
-=item fileno
|
|
-
|
|
-Use method C<IO::Handle::fileno()> instead, or see L<perlfunc/fileno>.
|
|
-
|
|
-=item floor
|
|
-
|
|
-This is identical to the C function C<floor()>, returning the largest
|
|
-integer value less than or equal to the numerical argument.
|
|
-
|
|
-=item fmod
|
|
-
|
|
-This is identical to the C function C<fmod()>.
|
|
-
|
|
- $r = fmod($x, $y);
|
|
-
|
|
-It returns the remainder C<$r = $x - $n*$y>, where C<$n = trunc($x/$y)>.
|
|
-The C<$r> has the same sign as C<$x> and magnitude (absolute value)
|
|
-less than the magnitude of C<$y>.
|
|
-
|
|
-=item fopen
|
|
-
|
|
-Use method C<IO::File::open()> instead, or see L<perlfunc/open>.
|
|
-
|
|
-=item fork
|
|
-
|
|
-This is identical to Perl's builtin C<fork()> function
|
|
-for duplicating the current process, see L<perlfunc/fork>
|
|
-and L<perlfork> if you are in Windows.
|
|
-
|
|
-=item fpathconf
|
|
-
|
|
-Retrieves the value of a configurable limit on a file or directory. This
|
|
-uses file descriptors such as those obtained by calling C<POSIX::open>.
|
|
-
|
|
-The following will determine the maximum length of the longest allowable
|
|
-pathname on the filesystem which holds C</var/foo>.
|
|
-
|
|
- $fd = POSIX::open( "/var/foo", &POSIX::O_RDONLY );
|
|
- $path_max = POSIX::fpathconf( $fd, &POSIX::_PC_PATH_MAX );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item fprintf
|
|
-
|
|
-fprintf() is C-specific, see L<perlfunc/printf> instead.
|
|
-
|
|
-=item fputc
|
|
-
|
|
-fputc() is C-specific, see L<perlfunc/print> instead.
|
|
-
|
|
-=item fputs
|
|
-
|
|
-fputs() is C-specific, see L<perlfunc/print> instead.
|
|
-
|
|
-=item fread
|
|
-
|
|
-fread() is C-specific, see L<perlfunc/read> instead.
|
|
-
|
|
-=item free
|
|
-
|
|
-free() is C-specific. Perl does memory management transparently.
|
|
-
|
|
-=item freopen
|
|
-
|
|
-freopen() is C-specific, see L<perlfunc/open> instead.
|
|
-
|
|
-=item frexp
|
|
-
|
|
-Return the mantissa and exponent of a floating-point number.
|
|
-
|
|
- ($mantissa, $exponent) = POSIX::frexp( 1.234e56 );
|
|
-
|
|
-=item fscanf
|
|
-
|
|
-fscanf() is C-specific, use E<lt>E<gt> and regular expressions instead.
|
|
-
|
|
-=item fseek
|
|
-
|
|
-Use method C<IO::Seekable::seek()> instead, or see L<perlfunc/seek>.
|
|
-
|
|
-=item fsetpos
|
|
-
|
|
-Use method C<IO::Seekable::setpos()> instead, or seek L<perlfunc/seek>.
|
|
-
|
|
-=item fstat
|
|
-
|
|
-Get file status. This uses file descriptors such as those obtained by
|
|
-calling C<POSIX::open>. The data returned is identical to the data from
|
|
-Perl's builtin C<stat> function.
|
|
-
|
|
- $fd = POSIX::open( "foo", &POSIX::O_RDONLY );
|
|
- @stats = POSIX::fstat( $fd );
|
|
-
|
|
-=item fsync
|
|
-
|
|
-Use method C<IO::Handle::sync()> instead.
|
|
-
|
|
-=item ftell
|
|
-
|
|
-Use method C<IO::Seekable::tell()> instead, or see L<perlfunc/tell>.
|
|
-
|
|
-=item fwrite
|
|
-
|
|
-fwrite() is C-specific, see L<perlfunc/print> instead.
|
|
-
|
|
-=item getc
|
|
-
|
|
-This is identical to Perl's builtin C<getc()> function,
|
|
-see L<perlfunc/getc>.
|
|
-
|
|
-=item getchar
|
|
-
|
|
-Returns one character from STDIN. Identical to Perl's C<getc()>,
|
|
-see L<perlfunc/getc>.
|
|
-
|
|
-=item getcwd
|
|
-
|
|
-Returns the name of the current working directory.
|
|
-See also L<Cwd>.
|
|
-
|
|
-=item getegid
|
|
-
|
|
-Returns the effective group identifier. Similar to Perl' s builtin
|
|
-variable C<$(>, see L<perlvar/$EGID>.
|
|
-
|
|
-=item getenv
|
|
-
|
|
-Returns the value of the specified environment variable.
|
|
-The same information is available through the C<%ENV> array.
|
|
-
|
|
-=item geteuid
|
|
-
|
|
-Returns the effective user identifier. Identical to Perl's builtin C<$E<gt>>
|
|
-variable, see L<perlvar/$EUID>.
|
|
-
|
|
-=item getgid
|
|
-
|
|
-Returns the user's real group identifier. Similar to Perl's builtin
|
|
-variable C<$)>, see L<perlvar/$GID>.
|
|
-
|
|
-=item getgrgid
|
|
-
|
|
-This is identical to Perl's builtin C<getgrgid()> function for
|
|
-returning group entries by group identifiers, see
|
|
-L<perlfunc/getgrgid>.
|
|
-
|
|
-=item getgrnam
|
|
-
|
|
-This is identical to Perl's builtin C<getgrnam()> function for
|
|
-returning group entries by group names, see L<perlfunc/getgrnam>.
|
|
-
|
|
-=item getgroups
|
|
-
|
|
-Returns the ids of the user's supplementary groups. Similar to Perl's
|
|
-builtin variable C<$)>, see L<perlvar/$GID>.
|
|
-
|
|
-=item getlogin
|
|
-
|
|
-This is identical to Perl's builtin C<getlogin()> function for
|
|
-returning the user name associated with the current session, see
|
|
-L<perlfunc/getlogin>.
|
|
-
|
|
-=item getpgrp
|
|
-
|
|
-This is identical to Perl's builtin C<getpgrp()> function for
|
|
-returning the process group identifier of the current process, see
|
|
-L<perlfunc/getpgrp>.
|
|
-
|
|
-=item getpid
|
|
-
|
|
-Returns the process identifier. Identical to Perl's builtin
|
|
-variable C<$$>, see L<perlvar/$PID>.
|
|
-
|
|
-=item getppid
|
|
-
|
|
-This is identical to Perl's builtin C<getppid()> function for
|
|
-returning the process identifier of the parent process of the current
|
|
-process , see L<perlfunc/getppid>.
|
|
-
|
|
-=item getpwnam
|
|
-
|
|
-This is identical to Perl's builtin C<getpwnam()> function for
|
|
-returning user entries by user names, see L<perlfunc/getpwnam>.
|
|
-
|
|
-=item getpwuid
|
|
-
|
|
-This is identical to Perl's builtin C<getpwuid()> function for
|
|
-returning user entries by user identifiers, see L<perlfunc/getpwuid>.
|
|
-
|
|
-=item gets
|
|
-
|
|
-Returns one line from C<STDIN>, similar to E<lt>E<gt>, also known
|
|
-as the C<readline()> function, see L<perlfunc/readline>.
|
|
-
|
|
-B<NOTE>: if you have C programs that still use C<gets()>, be very
|
|
-afraid. The C<gets()> function is a source of endless grief because
|
|
-it has no buffer overrun checks. It should B<never> be used. The
|
|
-C<fgets()> function should be preferred instead.
|
|
-
|
|
-=item getuid
|
|
-
|
|
-Returns the user's identifier. Identical to Perl's builtin C<$E<lt>> variable,
|
|
-see L<perlvar/$UID>.
|
|
-
|
|
-=item gmtime
|
|
-
|
|
-This is identical to Perl's builtin C<gmtime()> function for
|
|
-converting seconds since the epoch to a date in Greenwich Mean Time,
|
|
-see L<perlfunc/gmtime>.
|
|
-
|
|
-=item isalnum
|
|
-
|
|
-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 C<isalnum>. Does not work on
|
|
-Unicode characters code point 256 or higher. Consider using regular
|
|
-expressions and the C</[[:alnum:]]/> construct instead, or possibly
|
|
-the C</\w/> construct.
|
|
-
|
|
-=item isalpha
|
|
-
|
|
-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 C<isalpha>. Does not work
|
|
-on Unicode characters code point 256 or higher. Consider using regular
|
|
-expressions and the C</[[:alpha:]]/> construct instead.
|
|
-
|
|
-=item isatty
|
|
-
|
|
-Returns a boolean indicating whether the specified filehandle is connected
|
|
-to a tty. Similar to the C<-t> operator, see L<perlfunc/-X>.
|
|
-
|
|
-=item iscntrl
|
|
-
|
|
-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 C<iscntrl>. Does not work
|
|
-on Unicode characters code point 256 or higher. Consider using regular
|
|
-expressions and the C</[[:cntrl:]]/> construct instead.
|
|
-
|
|
-=item isdigit
|
|
-
|
|
-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 C<isdigit> (unlikely, but
|
|
-still possible). Does not work on Unicode characters code point 256
|
|
-or higher. Consider using regular expressions and the C</[[:digit:]]/>
|
|
-construct instead, or the C</\d/> construct.
|
|
-
|
|
-=item isgraph
|
|
-
|
|
-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 C<isgraph>. Does not work
|
|
-on Unicode characters code point 256 or higher. Consider using regular
|
|
-expressions and the C</[[:graph:]]/> construct instead.
|
|
-
|
|
-=item islower
|
|
-
|
|
-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 C<islower>. Does not work
|
|
-on Unicode characters code point 256 or higher. Consider using regular
|
|
-expressions and the C</[[:lower:]]/> construct instead. Do B<not> use
|
|
-C</[a-z]/>.
|
|
-
|
|
-=item isprint
|
|
-
|
|
-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 C<isprint>. Does not work
|
|
-on Unicode characters code point 256 or higher. Consider using regular
|
|
-expressions and the C</[[:print:]]/> construct instead.
|
|
-
|
|
-=item ispunct
|
|
-
|
|
-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 C<ispunct>. Does not work
|
|
-on Unicode characters code point 256 or higher. Consider using regular
|
|
-expressions and the C</[[:punct:]]/> construct instead.
|
|
-
|
|
-=item isspace
|
|
-
|
|
-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 C<isspace>. Does not work
|
|
-on Unicode characters code point 256 or higher. Consider using regular
|
|
-expressions and the C</[[:space:]]/> construct instead, or the C</\s/>
|
|
-construct. (Note that C</\s/> and C</[[:space:]]/> are slightly
|
|
-different in that C</[[:space:]]/> can normally match a vertical tab,
|
|
-while C</\s/> does not.)
|
|
-
|
|
-=item isupper
|
|
-
|
|
-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 C<isupper>. Does not work
|
|
-on Unicode characters code point 256 or higher. Consider using regular
|
|
-expressions and the C</[[:upper:]]/> construct instead. Do B<not> use
|
|
-C</[A-Z]/>.
|
|
-
|
|
-=item isxdigit
|
|
-
|
|
-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 C<isxdigit> (unlikely, but still possible).
|
|
-Does not work on Unicode characters code point 256 or higher.
|
|
-Consider using regular expressions and the C</[[:xdigit:]]/>
|
|
-construct instead, or simply C</[0-9a-f]/i>.
|
|
-
|
|
-=item kill
|
|
-
|
|
-This is identical to Perl's builtin C<kill()> function for sending
|
|
-signals to processes (often to terminate them), see L<perlfunc/kill>.
|
|
-
|
|
-=item labs
|
|
-
|
|
-(For returning absolute values of long integers.)
|
|
-labs() is C-specific, see L<perlfunc/abs> instead.
|
|
-
|
|
-=item lchown
|
|
-
|
|
-This is identical to the C function, except the order of arguments is
|
|
-consistent with Perl's builtin C<chown()> with the added restriction
|
|
-of only one path, not an list of paths. Does the same thing as the
|
|
-C<chown()> function but changes the owner of a symbolic link instead
|
|
-of the file the symbolic link points to.
|
|
-
|
|
-=item ldexp
|
|
-
|
|
-This is identical to the C function C<ldexp()>
|
|
-for multiplying floating point numbers with powers of two.
|
|
-
|
|
- $x_quadrupled = POSIX::ldexp($x, 2);
|
|
-
|
|
-=item ldiv
|
|
-
|
|
-(For computing dividends of long integers.)
|
|
-ldiv() is C-specific, use C</> and C<int()> instead.
|
|
-
|
|
-=item link
|
|
-
|
|
-This is identical to Perl's builtin C<link()> function
|
|
-for creating hard links into files, see L<perlfunc/link>.
|
|
-
|
|
-=item localeconv
|
|
-
|
|
-Get numeric formatting information. Returns a reference to a hash
|
|
-containing the current locale formatting values.
|
|
-
|
|
-Here is how to query the database for the B<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";
|
|
-
|
|
-=item localtime
|
|
-
|
|
-This is identical to Perl's builtin C<localtime()> function for
|
|
-converting seconds since the epoch to a date see L<perlfunc/localtime>.
|
|
-
|
|
-=item log
|
|
-
|
|
-This is identical to Perl's builtin C<log()> function,
|
|
-returning the natural (I<e>-based) logarithm of the numerical argument,
|
|
-see L<perlfunc/log>.
|
|
-
|
|
-=item log10
|
|
-
|
|
-This is identical to the C function C<log10()>,
|
|
-returning the 10-base logarithm of the numerical argument.
|
|
-You can also use
|
|
-
|
|
- sub log10 { log($_[0]) / log(10) }
|
|
-
|
|
-or
|
|
-
|
|
- sub log10 { log($_[0]) / 2.30258509299405 }
|
|
-
|
|
-or
|
|
-
|
|
- sub log10 { log($_[0]) * 0.434294481903252 }
|
|
-
|
|
-=item longjmp
|
|
-
|
|
-longjmp() is C-specific: use L<perlfunc/die> instead.
|
|
-
|
|
-=item lseek
|
|
-
|
|
-Move the file's read/write position. This uses file descriptors such as
|
|
-those obtained by calling C<POSIX::open>.
|
|
-
|
|
- $fd = POSIX::open( "foo", &POSIX::O_RDONLY );
|
|
- $off_t = POSIX::lseek( $fd, 0, &POSIX::SEEK_SET );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item malloc
|
|
-
|
|
-malloc() is C-specific. Perl does memory management transparently.
|
|
-
|
|
-=item mblen
|
|
-
|
|
-This is identical to the C function C<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.
|
|
-
|
|
-=item mbstowcs
|
|
-
|
|
-This is identical to the C function C<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.
|
|
-
|
|
-=item mbtowc
|
|
-
|
|
-This is identical to the C function C<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.
|
|
-
|
|
-=item memchr
|
|
-
|
|
-memchr() is C-specific, see L<perlfunc/index> instead.
|
|
-
|
|
-=item memcmp
|
|
-
|
|
-memcmp() is C-specific, use C<eq> instead, see L<perlop>.
|
|
-
|
|
-=item memcpy
|
|
-
|
|
-memcpy() is C-specific, use C<=>, see L<perlop>, or see L<perlfunc/substr>.
|
|
-
|
|
-=item memmove
|
|
-
|
|
-memmove() is C-specific, use C<=>, see L<perlop>, or see L<perlfunc/substr>.
|
|
-
|
|
-=item memset
|
|
-
|
|
-memset() is C-specific, use C<x> instead, see L<perlop>.
|
|
-
|
|
-=item mkdir
|
|
-
|
|
-This is identical to Perl's builtin C<mkdir()> function
|
|
-for creating directories, see L<perlfunc/mkdir>.
|
|
-
|
|
-=item mkfifo
|
|
-
|
|
-This is similar to the C function C<mkfifo()> for creating
|
|
-FIFO special files.
|
|
-
|
|
- if (mkfifo($path, $mode)) { ....
|
|
-
|
|
-Returns C<undef> on failure. The C<$mode> is similar to the
|
|
-mode of C<mkdir()>, see L<perlfunc/mkdir>, though for C<mkfifo>
|
|
-you B<must> specify the C<$mode>.
|
|
-
|
|
-=item mktime
|
|
-
|
|
-Convert date/time info to a calendar time.
|
|
-
|
|
-Synopsis:
|
|
-
|
|
- mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = -1)
|
|
-
|
|
-The month (C<mon>), weekday (C<wday>), and yearday (C<yday>) begin at zero.
|
|
-I.e. January is 0, not 1; Sunday is 0, not 1; January 1st is 0, not 1. The
|
|
-year (C<year>) is given in years since 1900. I.e. The year 1995 is 95; the
|
|
-year 2001 is 101. Consult your system's C<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 C<undef> on failure.
|
|
-
|
|
-=item modf
|
|
-
|
|
-Return the integral and fractional parts of a floating-point number.
|
|
-
|
|
- ($fractional, $integral) = POSIX::modf( 3.14 );
|
|
-
|
|
-=item nice
|
|
-
|
|
-This is similar to the C function C<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.
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item offsetof
|
|
-
|
|
-offsetof() is C-specific, you probably want to see L<perlfunc/pack> instead.
|
|
-
|
|
-=item open
|
|
-
|
|
-Open a file for reading for writing. This returns file descriptors, not
|
|
-Perl filehandles. Use C<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 C<undef> on failure.
|
|
-
|
|
-See also L<perlfunc/sysopen>.
|
|
-
|
|
-=item opendir
|
|
-
|
|
-Open a directory for reading.
|
|
-
|
|
- $dir = POSIX::opendir( "/var" );
|
|
- @files = POSIX::readdir( $dir );
|
|
- POSIX::closedir( $dir );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item pathconf
|
|
-
|
|
-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 C</var>.
|
|
-
|
|
- $path_max = POSIX::pathconf( "/var", &POSIX::_PC_PATH_MAX );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item pause
|
|
-
|
|
-This is similar to the C function C<pause()>, which suspends
|
|
-the execution of the current process until a signal is received.
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item perror
|
|
-
|
|
-This is identical to the C function C<perror()>, which outputs to the
|
|
-standard error stream the specified message followed by ": " and the
|
|
-current error string. Use the C<warn()> function and the C<$!>
|
|
-variable instead, see L<perlfunc/warn> and L<perlvar/$ERRNO>.
|
|
-
|
|
-=item pipe
|
|
-
|
|
-Create an interprocess channel. This returns file descriptors like those
|
|
-returned by C<POSIX::open>.
|
|
-
|
|
- my ($read, $write) = POSIX::pipe();
|
|
- POSIX::write( $write, "hello", 5 );
|
|
- POSIX::read( $read, $buf, 5 );
|
|
-
|
|
-See also L<perlfunc/pipe>.
|
|
-
|
|
-=item pow
|
|
-
|
|
-Computes C<$x> raised to the power C<$exponent>.
|
|
-
|
|
- $ret = POSIX::pow( $x, $exponent );
|
|
-
|
|
-You can also use the C<**> operator, see L<perlop>.
|
|
-
|
|
-=item printf
|
|
-
|
|
-Formats and prints the specified arguments to STDOUT.
|
|
-See also L<perlfunc/printf>.
|
|
-
|
|
-=item putc
|
|
-
|
|
-putc() is C-specific, see L<perlfunc/print> instead.
|
|
-
|
|
-=item putchar
|
|
-
|
|
-putchar() is C-specific, see L<perlfunc/print> instead.
|
|
-
|
|
-=item puts
|
|
-
|
|
-puts() is C-specific, see L<perlfunc/print> instead.
|
|
-
|
|
-=item qsort
|
|
-
|
|
-qsort() is C-specific, see L<perlfunc/sort> instead.
|
|
-
|
|
-=item raise
|
|
-
|
|
-Sends the specified signal to the current process.
|
|
-See also L<perlfunc/kill> and the C<$$> in L<perlvar/$PID>.
|
|
-
|
|
-=item rand
|
|
-
|
|
-C<rand()> is non-portable, see L<perlfunc/rand> instead.
|
|
-
|
|
-=item read
|
|
-
|
|
-Read from a file. This uses file descriptors such as those obtained by
|
|
-calling C<POSIX::open>. If the buffer C<$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 C<undef> on failure.
|
|
-
|
|
-See also L<perlfunc/sysread>.
|
|
-
|
|
-=item readdir
|
|
-
|
|
-This is identical to Perl's builtin C<readdir()> function
|
|
-for reading directory entries, see L<perlfunc/readdir>.
|
|
-
|
|
-=item realloc
|
|
-
|
|
-realloc() is C-specific. Perl does memory management transparently.
|
|
-
|
|
-=item remove
|
|
-
|
|
-This is identical to Perl's builtin C<unlink()> function
|
|
-for removing files, see L<perlfunc/unlink>.
|
|
-
|
|
-=item rename
|
|
-
|
|
-This is identical to Perl's builtin C<rename()> function
|
|
-for renaming files, see L<perlfunc/rename>.
|
|
-
|
|
-=item rewind
|
|
-
|
|
-Seeks to the beginning of the file.
|
|
-
|
|
-=item rewinddir
|
|
-
|
|
-This is identical to Perl's builtin C<rewinddir()> function for
|
|
-rewinding directory entry streams, see L<perlfunc/rewinddir>.
|
|
-
|
|
-=item rmdir
|
|
-
|
|
-This is identical to Perl's builtin C<rmdir()> function
|
|
-for removing (empty) directories, see L<perlfunc/rmdir>.
|
|
-
|
|
-=item scanf
|
|
-
|
|
-scanf() is C-specific, use E<lt>E<gt> and regular expressions instead,
|
|
-see L<perlre>.
|
|
-
|
|
-=item setgid
|
|
-
|
|
-Sets the real group identifier and the effective group identifier for
|
|
-this process. Similar to assigning a value to the Perl's builtin
|
|
-C<$)> variable, see L<perlvar/$EGID>, 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.
|
|
-
|
|
-=item setjmp
|
|
-
|
|
-C<setjmp()> is C-specific: use C<eval {}> instead,
|
|
-see L<perlfunc/eval>.
|
|
-
|
|
-=item setlocale
|
|
-
|
|
-Modifies and queries program's locale. The following examples assume
|
|
-
|
|
- use POSIX qw(setlocale LC_ALL LC_CTYPE);
|
|
-
|
|
-has been issued.
|
|
-
|
|
-The following will set the traditional UNIX system locale behavior
|
|
-(the second argument C<"C">).
|
|
-
|
|
- $loc = setlocale( LC_ALL, "C" );
|
|
-
|
|
-The following will query the current LC_CTYPE category. (No second
|
|
-argument means 'query'.)
|
|
-
|
|
- $loc = setlocale( LC_CTYPE );
|
|
-
|
|
-The following will set the LC_CTYPE behaviour according to the locale
|
|
-environment variables (the second argument C<"">).
|
|
-Please see your systems C<setlocale(3)> documentation for the locale
|
|
-environment variables' meaning or consult L<perllocale>.
|
|
-
|
|
- $loc = setlocale( LC_CTYPE, "" );
|
|
-
|
|
-The following will set the LC_COLLATE behaviour to Argentinian
|
|
-Spanish. B<NOTE>: The naming and availability of locales depends on
|
|
-your operating system. Please consult L<perllocale> for how to find
|
|
-out which locales are available in your system.
|
|
-
|
|
- $loc = setlocale( LC_COLLATE, "es_AR.ISO8859-1" );
|
|
-
|
|
-=item setpgid
|
|
-
|
|
-This is similar to the C function C<setpgid()> for
|
|
-setting the process group identifier of the current process.
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item setsid
|
|
-
|
|
-This is identical to the C function C<setsid()> for
|
|
-setting the session identifier of the current process.
|
|
-
|
|
-=item setuid
|
|
-
|
|
-Sets the real user identifier and the effective user identifier for
|
|
-this process. Similar to assigning a value to the Perl's builtin
|
|
-C<$E<lt>> variable, see L<perlvar/$UID>, except that the latter
|
|
-will change only the real user identifier.
|
|
-
|
|
-=item sigaction
|
|
-
|
|
-Detailed signal management. This uses C<POSIX::SigAction> objects for
|
|
-the C<action> and C<oldaction> arguments (the oldaction can also be
|
|
-just a hash reference). Consult your system's C<sigaction> manpage
|
|
-for details, see also C<POSIX::SigRt>.
|
|
-
|
|
-Synopsis:
|
|
-
|
|
- sigaction(signal, action, oldaction = 0)
|
|
-
|
|
-Returns C<undef> on failure. The C<signal> must be a number (like
|
|
-SIGHUP), not a string (like "SIGHUP"), though Perl does try hard
|
|
-to understand you.
|
|
-
|
|
-If you use the SA_SIGINFO flag, the signal handler will in addition to
|
|
-the first argument, the signal name, also receive a second argument, a
|
|
-hash reference, inside which are the following keys with the following
|
|
-semantics, as defined by POSIX/SUSv3:
|
|
-
|
|
- signo the signal number
|
|
- errno the error number
|
|
- code if this is zero or less, the signal was sent by
|
|
- a user process and the uid and pid make sense,
|
|
- otherwise the signal was sent by the kernel
|
|
-
|
|
-The following are also defined by POSIX/SUSv3, but unfortunately
|
|
-not very widely implemented:
|
|
-
|
|
- pid the process id generating the signal
|
|
- uid the uid of the process id generating the signal
|
|
- status exit value or signal for SIGCHLD
|
|
- band band event for SIGPOLL
|
|
-
|
|
-A third argument is also passed to the handler, which contains a copy
|
|
-of the raw binary contents of the siginfo structure: if a system has
|
|
-some non-POSIX fields, this third argument is where to unpack() them
|
|
-from.
|
|
-
|
|
-Note that not all siginfo values make sense simultaneously (some are
|
|
-valid only for certain signals, for example), and not all values make
|
|
-sense from Perl perspective, you should to consult your system's
|
|
-C<sigaction> and possibly also C<siginfo> documentation.
|
|
-
|
|
-=item siglongjmp
|
|
-
|
|
-siglongjmp() is C-specific: use L<perlfunc/die> instead.
|
|
-
|
|
-=item sigpending
|
|
-
|
|
-Examine signals that are blocked and pending. This uses C<POSIX::SigSet>
|
|
-objects for the C<sigset> argument. Consult your system's C<sigpending>
|
|
-manpage for details.
|
|
-
|
|
-Synopsis:
|
|
-
|
|
- sigpending(sigset)
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item sigprocmask
|
|
-
|
|
-Change and/or examine calling process's signal mask. This uses
|
|
-C<POSIX::SigSet> objects for the C<sigset> and C<oldsigset> arguments.
|
|
-Consult your system's C<sigprocmask> manpage for details.
|
|
-
|
|
-Synopsis:
|
|
-
|
|
- sigprocmask(how, sigset, oldsigset = 0)
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item sigsetjmp
|
|
-
|
|
-C<sigsetjmp()> is C-specific: use C<eval {}> instead,
|
|
-see L<perlfunc/eval>.
|
|
-
|
|
-=item sigsuspend
|
|
-
|
|
-Install a signal mask and suspend process until signal arrives. This uses
|
|
-C<POSIX::SigSet> objects for the C<signal_mask> argument. Consult your
|
|
-system's C<sigsuspend> manpage for details.
|
|
-
|
|
-Synopsis:
|
|
-
|
|
- sigsuspend(signal_mask)
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item sin
|
|
-
|
|
-This is identical to Perl's builtin C<sin()> function
|
|
-for returning the sine of the numerical argument,
|
|
-see L<perlfunc/sin>. See also L<Math::Trig>.
|
|
-
|
|
-=item sinh
|
|
-
|
|
-This is identical to the C function C<sinh()>
|
|
-for returning the hyperbolic sine of the numerical argument.
|
|
-See also L<Math::Trig>.
|
|
-
|
|
-=item sleep
|
|
-
|
|
-This is functionally identical to Perl's builtin C<sleep()> function
|
|
-for suspending the execution of the current for process for certain
|
|
-number of seconds, see L<perlfunc/sleep>. There is one significant
|
|
-difference, however: C<POSIX::sleep()> returns the number of
|
|
-B<unslept> seconds, while the C<CORE::sleep()> returns the
|
|
-number of slept seconds.
|
|
-
|
|
-=item sprintf
|
|
-
|
|
-This is similar to Perl's builtin C<sprintf()> function
|
|
-for returning a string that has the arguments formatted as requested,
|
|
-see L<perlfunc/sprintf>.
|
|
-
|
|
-=item sqrt
|
|
-
|
|
-This is identical to Perl's builtin C<sqrt()> function.
|
|
-for returning the square root of the numerical argument,
|
|
-see L<perlfunc/sqrt>.
|
|
-
|
|
-=item srand
|
|
-
|
|
-Give a seed the pseudorandom number generator, see L<perlfunc/srand>.
|
|
-
|
|
-=item sscanf
|
|
-
|
|
-sscanf() is C-specific, use regular expressions instead,
|
|
-see L<perlre>.
|
|
-
|
|
-=item stat
|
|
-
|
|
-This is identical to Perl's builtin C<stat()> function
|
|
-for returning information about files and directories.
|
|
-
|
|
-=item strcat
|
|
-
|
|
-strcat() is C-specific, use C<.=> instead, see L<perlop>.
|
|
-
|
|
-=item strchr
|
|
-
|
|
-strchr() is C-specific, see L<perlfunc/index> instead.
|
|
-
|
|
-=item strcmp
|
|
-
|
|
-strcmp() is C-specific, use C<eq> or C<cmp> instead, see L<perlop>.
|
|
-
|
|
-=item strcoll
|
|
-
|
|
-This is identical to the C function C<strcoll()>
|
|
-for collating (comparing) strings transformed using
|
|
-the C<strxfrm()> function. Not really needed since
|
|
-Perl can do this transparently, see L<perllocale>.
|
|
-
|
|
-=item strcpy
|
|
-
|
|
-strcpy() is C-specific, use C<=> instead, see L<perlop>.
|
|
-
|
|
-=item strcspn
|
|
-
|
|
-strcspn() is C-specific, use regular expressions instead,
|
|
-see L<perlre>.
|
|
-
|
|
-=item strerror
|
|
-
|
|
-Returns the error string for the specified errno.
|
|
-Identical to the string form of the C<$!>, see L<perlvar/$ERRNO>.
|
|
-
|
|
-=item strftime
|
|
-
|
|
-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 (C<mon>), weekday (C<wday>), and yearday (C<yday>) begin at zero.
|
|
-I.e. January is 0, not 1; Sunday is 0, not 1; January 1st is 0, not 1. The
|
|
-year (C<year>) is given in years since 1900. I.e., the year 1995 is 95; the
|
|
-year 2001 is 101. Consult your system's C<strftime()> manpage for details
|
|
-about these and the other arguments.
|
|
-
|
|
-If you want your code to be portable, your format (C<fmt>) argument
|
|
-should use only the conversion specifiers defined by the ANSI C
|
|
-standard (C89, to play safe). These are C<aAbBcdHIjmMpSUwWxXyYZ%>.
|
|
-But even then, the B<results> of some of the conversion specifiers are
|
|
-non-portable. For example, the specifiers C<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<c> changes according to the timezone settings of the
|
|
-user and the timezone computation rules of the operating system.
|
|
-The C<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
|
|
-C<mktime()> before calling your system's C<strftime()> function,
|
|
-except that the C<isdst> value is not affected.
|
|
-
|
|
-The string for Tuesday, December 12, 1995.
|
|
-
|
|
- $str = POSIX::strftime( "%A, %B %d, %Y", 0, 0, 0, 12, 11, 95, 2 );
|
|
- print "$str\n";
|
|
-
|
|
-=item strlen
|
|
-
|
|
-strlen() is C-specific, use C<length()> instead, see L<perlfunc/length>.
|
|
-
|
|
-=item strncat
|
|
-
|
|
-strncat() is C-specific, use C<.=> instead, see L<perlop>.
|
|
-
|
|
-=item strncmp
|
|
-
|
|
-strncmp() is C-specific, use C<eq> instead, see L<perlop>.
|
|
-
|
|
-=item strncpy
|
|
-
|
|
-strncpy() is C-specific, use C<=> instead, see L<perlop>.
|
|
-
|
|
-=item strpbrk
|
|
-
|
|
-strpbrk() is C-specific, use regular expressions instead,
|
|
-see L<perlre>.
|
|
-
|
|
-=item strrchr
|
|
-
|
|
-strrchr() is C-specific, see L<perlfunc/rindex> instead.
|
|
-
|
|
-=item strspn
|
|
-
|
|
-strspn() is C-specific, use regular expressions instead,
|
|
-see L<perlre>.
|
|
-
|
|
-=item strstr
|
|
-
|
|
-This is identical to Perl's builtin C<index()> function,
|
|
-see L<perlfunc/index>.
|
|
-
|
|
-=item strtod
|
|
-
|
|
-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 I<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.
|
|
-
|
|
-=item strtok
|
|
-
|
|
-strtok() is C-specific, use regular expressions instead, see
|
|
-L<perlre>, or L<perlfunc/split>.
|
|
-
|
|
-=item strtol
|
|
-
|
|
-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 I<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.
|
|
-
|
|
-=item strtoul
|
|
-
|
|
-String to unsigned (long) integer translation. strtoul() is identical
|
|
-to strtol() except that strtoul() only parses unsigned integers. See
|
|
-L</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.
|
|
-
|
|
-=item strxfrm
|
|
-
|
|
-String transformation. Returns the transformed string.
|
|
-
|
|
- $dst = POSIX::strxfrm( $src );
|
|
-
|
|
-Used in conjunction with the C<strcoll()> function, see L</strcoll>.
|
|
-
|
|
-Not really needed since Perl can do this transparently, see
|
|
-L<perllocale>.
|
|
-
|
|
-=item sysconf
|
|
-
|
|
-Retrieves values of system configurable variables.
|
|
-
|
|
-The following will get the machine's clock speed.
|
|
-
|
|
- $clock_ticks = POSIX::sysconf( &POSIX::_SC_CLK_TCK );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item system
|
|
-
|
|
-This is identical to Perl's builtin C<system()> function, see
|
|
-L<perlfunc/system>.
|
|
-
|
|
-=item tan
|
|
-
|
|
-This is identical to the C function C<tan()>, returning the
|
|
-tangent of the numerical argument. See also L<Math::Trig>.
|
|
-
|
|
-=item tanh
|
|
-
|
|
-This is identical to the C function C<tanh()>, returning the
|
|
-hyperbolic tangent of the numerical argument. See also L<Math::Trig>.
|
|
-
|
|
-=item tcdrain
|
|
-
|
|
-This is similar to the C function C<tcdrain()> for draining
|
|
-the output queue of its argument stream.
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item tcflow
|
|
-
|
|
-This is similar to the C function C<tcflow()> for controlling
|
|
-the flow of its argument stream.
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item tcflush
|
|
-
|
|
-This is similar to the C function C<tcflush()> for flushing
|
|
-the I/O buffers of its argument stream.
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item tcgetpgrp
|
|
-
|
|
-This is identical to the C function C<tcgetpgrp()> for returning the
|
|
-process group identifier of the foreground process group of the controlling
|
|
-terminal.
|
|
-
|
|
-=item tcsendbreak
|
|
-
|
|
-This is similar to the C function C<tcsendbreak()> for sending
|
|
-a break on its argument stream.
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item tcsetpgrp
|
|
-
|
|
-This is similar to the C function C<tcsetpgrp()> for setting the
|
|
-process group identifier of the foreground process group of the controlling
|
|
-terminal.
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item time
|
|
-
|
|
-This is identical to Perl's builtin C<time()> function
|
|
-for returning the number of seconds since the epoch
|
|
-(whatever it is for the system), see L<perlfunc/time>.
|
|
-
|
|
-=item times
|
|
-
|
|
-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 C<times()> function returns four values, measured in
|
|
-seconds.
|
|
-
|
|
-=item tmpfile
|
|
-
|
|
-Use method C<IO::File::new_tmpfile()> instead, or see L<File::Temp>.
|
|
-
|
|
-=item tmpnam
|
|
-
|
|
-Returns a name for a temporary file.
|
|
-
|
|
- $tmpfile = POSIX::tmpnam();
|
|
-
|
|
-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 L<File::Temp>.
|
|
-
|
|
-=item tolower
|
|
-
|
|
-This is identical to the C function, except that it can apply to a single
|
|
-character or to a whole string. Consider using the C<lc()> function,
|
|
-see L<perlfunc/lc>, or the equivalent C<\L> operator inside doublequotish
|
|
-strings.
|
|
-
|
|
-=item toupper
|
|
-
|
|
-This is identical to the C function, except that it can apply to a single
|
|
-character or to a whole string. Consider using the C<uc()> function,
|
|
-see L<perlfunc/uc>, or the equivalent C<\U> operator inside doublequotish
|
|
-strings.
|
|
-
|
|
-=item ttyname
|
|
-
|
|
-This is identical to the C function C<ttyname()> for returning the
|
|
-name of the current terminal.
|
|
-
|
|
-=item tzname
|
|
-
|
|
-Retrieves the time conversion information from the C<tzname> variable.
|
|
-
|
|
- POSIX::tzset();
|
|
- ($std, $dst) = POSIX::tzname();
|
|
-
|
|
-=item tzset
|
|
-
|
|
-This is identical to the C function C<tzset()> for setting
|
|
-the current timezone based on the environment variable C<TZ>,
|
|
-to be used by C<ctime()>, C<localtime()>, C<mktime()>, and C<strftime()>
|
|
-functions.
|
|
-
|
|
-=item umask
|
|
-
|
|
-This is identical to Perl's builtin C<umask()> function
|
|
-for setting (and querying) the file creation permission mask,
|
|
-see L<perlfunc/umask>.
|
|
-
|
|
-=item uname
|
|
-
|
|
-Get name of current operating system.
|
|
-
|
|
- ($sysname, $nodename, $release, $version, $machine) = POSIX::uname();
|
|
-
|
|
-Note that the actual meanings of the various fields are not
|
|
-that well standardized, do not expect any great portability.
|
|
-The C<$sysname> might be the name of the operating system,
|
|
-the C<$nodename> might be the name of the host, the C<$release>
|
|
-might be the (major) release number of the operating system,
|
|
-the C<$version> might be the (minor) release number of the
|
|
-operating system, and the C<$machine> might be a hardware identifier.
|
|
-Maybe.
|
|
-
|
|
-=item ungetc
|
|
-
|
|
-Use method C<IO::Handle::ungetc()> instead.
|
|
-
|
|
-=item unlink
|
|
-
|
|
-This is identical to Perl's builtin C<unlink()> function
|
|
-for removing files, see L<perlfunc/unlink>.
|
|
-
|
|
-=item utime
|
|
-
|
|
-This is identical to Perl's builtin C<utime()> function
|
|
-for changing the time stamps of files and directories,
|
|
-see L<perlfunc/utime>.
|
|
-
|
|
-=item vfprintf
|
|
-
|
|
-vfprintf() is C-specific, see L<perlfunc/printf> instead.
|
|
-
|
|
-=item vprintf
|
|
-
|
|
-vprintf() is C-specific, see L<perlfunc/printf> instead.
|
|
-
|
|
-=item vsprintf
|
|
-
|
|
-vsprintf() is C-specific, see L<perlfunc/sprintf> instead.
|
|
-
|
|
-=item wait
|
|
-
|
|
-This is identical to Perl's builtin C<wait()> function,
|
|
-see L<perlfunc/wait>.
|
|
-
|
|
-=item waitpid
|
|
-
|
|
-Wait for a child process to change state. This is identical to Perl's
|
|
-builtin C<waitpid()> function, see L<perlfunc/waitpid>.
|
|
-
|
|
- $pid = POSIX::waitpid( -1, POSIX::WNOHANG );
|
|
- print "status = ", ($? / 256), "\n";
|
|
-
|
|
-=item wcstombs
|
|
-
|
|
-This is identical to the C function C<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.
|
|
-
|
|
-=item wctomb
|
|
-
|
|
-This is identical to the C function C<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.
|
|
-
|
|
-=item write
|
|
-
|
|
-Write to a file. This uses file descriptors such as those obtained by
|
|
-calling C<POSIX::open>.
|
|
-
|
|
- $fd = POSIX::open( "foo", &POSIX::O_WRONLY );
|
|
- $buf = "hello";
|
|
- $bytes = POSIX::write( $fd, $buf, 5 );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-See also L<perlfunc/syswrite>.
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 CLASSES
|
|
-
|
|
-=head2 POSIX::SigAction
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item new
|
|
-
|
|
-Creates a new C<POSIX::SigAction> object which corresponds to the C
|
|
-C<struct sigaction>. This object will be destroyed automatically when
|
|
-it is no longer needed. The first parameter is the handler, a sub
|
|
-reference. The second parameter is a C<POSIX::SigSet> object, it
|
|
-defaults to the empty set. The third parameter contains the
|
|
-C<sa_flags>, it defaults to 0.
|
|
-
|
|
- $sigset = POSIX::SigSet->new(SIGINT, SIGQUIT);
|
|
- $sigaction = POSIX::SigAction->new( \&handler, $sigset, &POSIX::SA_NOCLDSTOP );
|
|
-
|
|
-This C<POSIX::SigAction> object is intended for use with the C<POSIX::sigaction()>
|
|
-function.
|
|
-
|
|
-=back
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item handler
|
|
-
|
|
-=item mask
|
|
-
|
|
-=item flags
|
|
-
|
|
-accessor functions to get/set the values of a SigAction object.
|
|
-
|
|
- $sigset = $sigaction->mask;
|
|
- $sigaction->flags(&POSIX::SA_RESTART);
|
|
-
|
|
-=item safe
|
|
-
|
|
-accessor function for the "safe signals" flag of a SigAction object; see
|
|
-L<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 C<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 C<POSIX::sigaction()>:
|
|
-
|
|
- sigaction(SIGINT, $new_action, $old_action);
|
|
- if ($old_action->safe) {
|
|
- # previous SIGINT handler used safe signals
|
|
- }
|
|
-
|
|
-=back
|
|
-
|
|
-=head2 POSIX::SigRt
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item %SIGRT
|
|
-
|
|
-A hash of the POSIX realtime signal handlers. It is an extension of
|
|
-the standard %SIG, the $POSIX::SIGRT{SIGRTMIN} is roughly equivalent
|
|
-to $SIG{SIGRTMIN}, but the right POSIX moves (see below) are made with
|
|
-the POSIX::SigSet and POSIX::sigaction instead of accessing the %SIG.
|
|
-
|
|
-You can set the %POSIX::SIGRT elements to set the POSIX realtime
|
|
-signal handlers, use C<delete> and C<exists> on the elements, and use
|
|
-C<scalar> on the C<%POSIX::SIGRT> to find out how many POSIX realtime
|
|
-signals there are available (SIGRTMAX - SIGRTMIN + 1, the SIGRTMAX is
|
|
-a valid POSIX realtime signal).
|
|
-
|
|
-Setting the %SIGRT elements is equivalent to calling this:
|
|
-
|
|
- sub new {
|
|
- my ($rtsig, $handler, $flags) = @_;
|
|
- my $sigset = POSIX::SigSet($rtsig);
|
|
- my $sigact = POSIX::SigAction->new($handler, $sigset, $flags);
|
|
- sigaction($rtsig, $sigact);
|
|
- }
|
|
-
|
|
-The flags default to zero, if you want something different you can
|
|
-either use C<local> on $POSIX::SigRt::SIGACTION_FLAGS, or you can
|
|
-derive from POSIX::SigRt and define your own C<new()> (the tied hash
|
|
-STORE method of the %SIGRT calls C<new($rtsig, $handler, $SIGACTION_FLAGS)>,
|
|
-where the $rtsig ranges from zero to SIGRTMAX - SIGRTMIN + 1).
|
|
-
|
|
-Just as with any signal, you can use sigaction($rtsig, undef, $oa) to
|
|
-retrieve the installed signal handler (or, rather, the signal action).
|
|
-
|
|
-B<NOTE:> whether POSIX realtime signals really work in your system, or
|
|
-whether Perl has been compiled so that it works with them, is outside
|
|
-of this discussion.
|
|
-
|
|
-=item SIGRTMIN
|
|
-
|
|
-Return the minimum POSIX realtime signal number available, or C<undef>
|
|
-if no POSIX realtime signals are available.
|
|
-
|
|
-=item SIGRTMAX
|
|
-
|
|
-Return the maximum POSIX realtime signal number available, or C<undef>
|
|
-if no POSIX realtime signals are available.
|
|
-
|
|
-=back
|
|
-
|
|
-=head2 POSIX::SigSet
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item new
|
|
-
|
|
-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 );
|
|
-
|
|
-=item addset
|
|
-
|
|
-Add a signal to a SigSet object.
|
|
-
|
|
- $sigset->addset( &POSIX::SIGUSR2 );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item delset
|
|
-
|
|
-Remove a signal from the SigSet object.
|
|
-
|
|
- $sigset->delset( &POSIX::SIGUSR2 );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item emptyset
|
|
-
|
|
-Initialize the SigSet object to be empty.
|
|
-
|
|
- $sigset->emptyset();
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item fillset
|
|
-
|
|
-Initialize the SigSet object to include all signals.
|
|
-
|
|
- $sigset->fillset();
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item ismember
|
|
-
|
|
-Tests the SigSet object to see if it contains a specific signal.
|
|
-
|
|
- if( $sigset->ismember( &POSIX::SIGUSR1 ) ){
|
|
- print "contains SIGUSR1\n";
|
|
- }
|
|
-
|
|
-=back
|
|
-
|
|
-=head2 POSIX::Termios
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item 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. 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;
|
|
-
|
|
-=item getattr
|
|
-
|
|
-Get terminal control attributes.
|
|
-
|
|
-Obtain the attributes for stdin.
|
|
-
|
|
- $termios->getattr( 0 ) # Recommended for clarity.
|
|
- $termios->getattr()
|
|
-
|
|
-Obtain the attributes for stdout.
|
|
-
|
|
- $termios->getattr( 1 )
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item getcc
|
|
-
|
|
-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);
|
|
-
|
|
-=item getcflag
|
|
-
|
|
-Retrieve the c_cflag field of a termios object.
|
|
-
|
|
- $c_cflag = $termios->getcflag;
|
|
-
|
|
-=item getiflag
|
|
-
|
|
-Retrieve the c_iflag field of a termios object.
|
|
-
|
|
- $c_iflag = $termios->getiflag;
|
|
-
|
|
-=item getispeed
|
|
-
|
|
-Retrieve the input baud rate.
|
|
-
|
|
- $ispeed = $termios->getispeed;
|
|
-
|
|
-=item getlflag
|
|
-
|
|
-Retrieve the c_lflag field of a termios object.
|
|
-
|
|
- $c_lflag = $termios->getlflag;
|
|
-
|
|
-=item getoflag
|
|
-
|
|
-Retrieve the c_oflag field of a termios object.
|
|
-
|
|
- $c_oflag = $termios->getoflag;
|
|
-
|
|
-=item getospeed
|
|
-
|
|
-Retrieve the output baud rate.
|
|
-
|
|
- $ospeed = $termios->getospeed;
|
|
-
|
|
-=item setattr
|
|
-
|
|
-Set terminal control attributes.
|
|
-
|
|
-Set attributes immediately for stdout.
|
|
-
|
|
- $termios->setattr( 1, &POSIX::TCSANOW );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item setcc
|
|
-
|
|
-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 );
|
|
-
|
|
-=item setcflag
|
|
-
|
|
-Set the c_cflag field of a termios object.
|
|
-
|
|
- $termios->setcflag( $c_cflag | &POSIX::CLOCAL );
|
|
-
|
|
-=item setiflag
|
|
-
|
|
-Set the c_iflag field of a termios object.
|
|
-
|
|
- $termios->setiflag( $c_iflag | &POSIX::BRKINT );
|
|
-
|
|
-=item setispeed
|
|
-
|
|
-Set the input baud rate.
|
|
-
|
|
- $termios->setispeed( &POSIX::B9600 );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item setlflag
|
|
-
|
|
-Set the c_lflag field of a termios object.
|
|
-
|
|
- $termios->setlflag( $c_lflag | &POSIX::ECHO );
|
|
-
|
|
-=item setoflag
|
|
-
|
|
-Set the c_oflag field of a termios object.
|
|
-
|
|
- $termios->setoflag( $c_oflag | &POSIX::OPOST );
|
|
-
|
|
-=item setospeed
|
|
-
|
|
-Set the output baud rate.
|
|
-
|
|
- $termios->setospeed( &POSIX::B9600 );
|
|
-
|
|
-Returns C<undef> on failure.
|
|
-
|
|
-=item Baud rate values
|
|
-
|
|
-B38400 B75 B200 B134 B300 B1800 B150 B0 B19200 B1200 B9600 B600 B4800 B50 B2400 B110
|
|
-
|
|
-=item Terminal interface values
|
|
-
|
|
-TCSADRAIN TCSANOW TCOON TCIOFLUSH TCOFLUSH TCION TCIFLUSH TCSAFLUSH TCIOFF TCOOFF
|
|
-
|
|
-=item c_cc field values
|
|
-
|
|
-VEOF VEOL VERASE VINTR VKILL VQUIT VSUSP VSTART VSTOP VMIN VTIME NCCS
|
|
-
|
|
-=item c_cflag field values
|
|
-
|
|
-CLOCAL CREAD CSIZE CS5 CS6 CS7 CS8 CSTOPB HUPCL PARENB PARODD
|
|
-
|
|
-=item c_iflag field values
|
|
-
|
|
-BRKINT ICRNL IGNBRK IGNCR IGNPAR INLCR INPCK ISTRIP IXOFF IXON PARMRK
|
|
-
|
|
-=item c_lflag field values
|
|
-
|
|
-ECHO ECHOE ECHOK ECHONL ICANON IEXTEN ISIG NOFLSH TOSTOP
|
|
-
|
|
-=item c_oflag field values
|
|
-
|
|
-OPOST
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 PATHNAME CONSTANTS
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-_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
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 POSIX CONSTANTS
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-_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
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 SYSTEM CONFIGURATION
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-_SC_ARG_MAX _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 ERRNO
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-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
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 FCNTL
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-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
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 FLOAT
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-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
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 LIMITS
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-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
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 LOCALE
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 MATH
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-HUGE_VAL
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 SIGNAL
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-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
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 STAT
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-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
|
|
-
|
|
-=item Macros
|
|
-
|
|
-S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 STDLIB
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX RAND_MAX
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 STDIO
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid L_tmpname TMP_MAX
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 TIME
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-CLK_TCK CLOCKS_PER_SEC
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 UNISTD
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-R_OK SEEK_CUR SEEK_END SEEK_SET STDIN_FILENO STDOUT_FILENO STDERR_FILENO W_OK X_OK
|
|
-
|
|
-=back
|
|
-
|
|
-=head1 WAIT
|
|
-
|
|
-=over 8
|
|
-
|
|
-=item Constants
|
|
-
|
|
-WNOHANG WUNTRACED
|
|
-
|
|
-=over 16
|
|
-
|
|
-=item WNOHANG
|
|
-
|
|
-Do not suspend the calling process until a child process
|
|
-changes state but instead return immediately.
|
|
-
|
|
-=item WUNTRACED
|
|
-
|
|
-Catch stopped child processes.
|
|
-
|
|
-=back
|
|
-
|
|
-=item Macros
|
|
-
|
|
-WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG WIFSTOPPED WSTOPSIG
|
|
-
|
|
-=over 16
|
|
-
|
|
-=item WIFEXITED
|
|
-
|
|
-WIFEXITED($?) returns true if the child process exited normally
|
|
-(C<exit()> or by falling off the end of C<main()>)
|
|
-
|
|
-=item WEXITSTATUS
|
|
-
|
|
-WEXITSTATUS($?) returns the normal exit status of the child process
|
|
-(only meaningful if WIFEXITED($?) is true)
|
|
-
|
|
-=item WIFSIGNALED
|
|
-
|
|
-WIFSIGNALED($?) returns true if the child process terminated because
|
|
-of a signal
|
|
-
|
|
-=item WTERMSIG
|
|
-
|
|
-WTERMSIG($?) returns the signal the child process terminated for
|
|
-(only meaningful if WIFSIGNALED($?) is true)
|
|
-
|
|
-=item WIFSTOPPED
|
|
-
|
|
-WIFSTOPPED($?) returns true if the child process is currently stopped
|
|
-(can happen only if you specified the WUNTRACED flag to waitpid())
|
|
-
|
|
-=item WSTOPSIG
|
|
-
|
|
-WSTOPSIG($?) returns the signal the child process was stopped for
|
|
-(only meaningful if WIFSTOPPED($?) is true)
|
|
-
|
|
-=back
|
|
-
|
|
-=back
|
|
-
|
|
diff --git a/ext/POSIX/lib/POSIX.pm b/ext/POSIX/lib/POSIX.pm
|
|
new file mode 100644
|
|
index 0000000..ffbd9de
|
|
--- /dev/null
|
|
+++ b/ext/POSIX/lib/POSIX.pm
|
|
@@ -0,0 +1,1042 @@
|
|
+package POSIX;
|
|
+use strict;
|
|
+use warnings;
|
|
+
|
|
+our(@ISA, %EXPORT_TAGS, @EXPORT_OK, @EXPORT, $AUTOLOAD, %SIGRT) = ();
|
|
+
|
|
+our $VERSION = "1.19";
|
|
+
|
|
+use AutoLoader;
|
|
+
|
|
+use XSLoader ();
|
|
+
|
|
+use Fcntl qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK 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 SEEK_CUR SEEK_END SEEK_SET
|
|
+ S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG
|
|
+ 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);
|
|
+
|
|
+# Grandfather old foo_h form to new :foo_h form
|
|
+my $loaded;
|
|
+
|
|
+sub import {
|
|
+ load_imports() unless $loaded++;
|
|
+ my $this = shift;
|
|
+ my @list = map { m/^\w+_h$/ ? ":$_" : $_ } @_;
|
|
+ local $Exporter::ExportLevel = 1;
|
|
+ Exporter::import($this,@list);
|
|
+}
|
|
+
|
|
+sub croak { require Carp; goto &Carp::croak }
|
|
+# declare usage to assist AutoLoad
|
|
+sub usage;
|
|
+
|
|
+XSLoader::load 'POSIX', $VERSION;
|
|
+
|
|
+sub AUTOLOAD {
|
|
+ no strict;
|
|
+ no warnings 'uninitialized';
|
|
+ if ($AUTOLOAD =~ /::(_?[a-z])/) {
|
|
+ # require AutoLoader;
|
|
+ $AutoLoader::AUTOLOAD = $AUTOLOAD;
|
|
+ goto &AutoLoader::AUTOLOAD
|
|
+ }
|
|
+ local $! = 0;
|
|
+ my $constname = $AUTOLOAD;
|
|
+ $constname =~ s/.*:://;
|
|
+ my ($error, $val) = constant($constname);
|
|
+ croak $error if $error;
|
|
+ *$AUTOLOAD = sub { $val };
|
|
+
|
|
+ goto &$AUTOLOAD;
|
|
+}
|
|
+
|
|
+package POSIX::SigAction;
|
|
+
|
|
+use AutoLoader 'AUTOLOAD';
|
|
+
|
|
+package POSIX::SigRt;
|
|
+
|
|
+use AutoLoader 'AUTOLOAD';
|
|
+
|
|
+use Tie::Hash;
|
|
+
|
|
+use vars qw($SIGACTION_FLAGS $_SIGRTMIN $_SIGRTMAX $_sigrtn @ISA);
|
|
+@POSIX::SigRt::ISA = qw(Tie::StdHash);
|
|
+
|
|
+$SIGACTION_FLAGS = 0;
|
|
+
|
|
+tie %POSIX::SIGRT, 'POSIX::SigRt';
|
|
+
|
|
+sub DESTROY {};
|
|
+
|
|
+package POSIX;
|
|
+
|
|
+1;
|
|
+__END__
|
|
+
|
|
+sub usage {
|
|
+ my ($mess) = @_;
|
|
+ croak "Usage: POSIX::$mess";
|
|
+}
|
|
+
|
|
+sub redef {
|
|
+ my ($mess) = @_;
|
|
+ croak "Use method $mess instead";
|
|
+}
|
|
+
|
|
+sub unimpl {
|
|
+ my ($mess) = @_;
|
|
+ $mess =~ s/xxx//;
|
|
+ croak "Unimplemented: POSIX::$mess";
|
|
+}
|
|
+
|
|
+sub assert {
|
|
+ usage "assert(expr)" if @_ != 1;
|
|
+ if (!$_[0]) {
|
|
+ croak "Assertion failed";
|
|
+ }
|
|
+}
|
|
+
|
|
+sub tolower {
|
|
+ usage "tolower(string)" if @_ != 1;
|
|
+ lc($_[0]);
|
|
+}
|
|
+
|
|
+sub toupper {
|
|
+ usage "toupper(string)" if @_ != 1;
|
|
+ uc($_[0]);
|
|
+}
|
|
+
|
|
+sub closedir {
|
|
+ usage "closedir(dirhandle)" if @_ != 1;
|
|
+ CORE::closedir($_[0]);
|
|
+}
|
|
+
|
|
+sub opendir {
|
|
+ usage "opendir(directory)" if @_ != 1;
|
|
+ my $dirhandle;
|
|
+ CORE::opendir($dirhandle, $_[0])
|
|
+ ? $dirhandle
|
|
+ : undef;
|
|
+}
|
|
+
|
|
+sub readdir {
|
|
+ usage "readdir(dirhandle)" if @_ != 1;
|
|
+ CORE::readdir($_[0]);
|
|
+}
|
|
+
|
|
+sub rewinddir {
|
|
+ usage "rewinddir(dirhandle)" if @_ != 1;
|
|
+ CORE::rewinddir($_[0]);
|
|
+}
|
|
+
|
|
+sub errno {
|
|
+ usage "errno()" if @_ != 0;
|
|
+ $! + 0;
|
|
+}
|
|
+
|
|
+sub creat {
|
|
+ usage "creat(filename, mode)" if @_ != 2;
|
|
+ &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[1]);
|
|
+}
|
|
+
|
|
+sub fcntl {
|
|
+ usage "fcntl(filehandle, cmd, arg)" if @_ != 3;
|
|
+ CORE::fcntl($_[0], $_[1], $_[2]);
|
|
+}
|
|
+
|
|
+sub getgrgid {
|
|
+ usage "getgrgid(gid)" if @_ != 1;
|
|
+ CORE::getgrgid($_[0]);
|
|
+}
|
|
+
|
|
+sub getgrnam {
|
|
+ usage "getgrnam(name)" if @_ != 1;
|
|
+ CORE::getgrnam($_[0]);
|
|
+}
|
|
+
|
|
+sub atan2 {
|
|
+ usage "atan2(x,y)" if @_ != 2;
|
|
+ CORE::atan2($_[0], $_[1]);
|
|
+}
|
|
+
|
|
+sub cos {
|
|
+ usage "cos(x)" if @_ != 1;
|
|
+ CORE::cos($_[0]);
|
|
+}
|
|
+
|
|
+sub exp {
|
|
+ usage "exp(x)" if @_ != 1;
|
|
+ CORE::exp($_[0]);
|
|
+}
|
|
+
|
|
+sub fabs {
|
|
+ usage "fabs(x)" if @_ != 1;
|
|
+ CORE::abs($_[0]);
|
|
+}
|
|
+
|
|
+sub log {
|
|
+ usage "log(x)" if @_ != 1;
|
|
+ CORE::log($_[0]);
|
|
+}
|
|
+
|
|
+sub pow {
|
|
+ usage "pow(x,exponent)" if @_ != 2;
|
|
+ $_[0] ** $_[1];
|
|
+}
|
|
+
|
|
+sub sin {
|
|
+ usage "sin(x)" if @_ != 1;
|
|
+ CORE::sin($_[0]);
|
|
+}
|
|
+
|
|
+sub sqrt {
|
|
+ usage "sqrt(x)" if @_ != 1;
|
|
+ CORE::sqrt($_[0]);
|
|
+}
|
|
+
|
|
+sub getpwnam {
|
|
+ usage "getpwnam(name)" if @_ != 1;
|
|
+ CORE::getpwnam($_[0]);
|
|
+}
|
|
+
|
|
+sub getpwuid {
|
|
+ usage "getpwuid(uid)" if @_ != 1;
|
|
+ CORE::getpwuid($_[0]);
|
|
+}
|
|
+
|
|
+sub longjmp {
|
|
+ unimpl "longjmp() is C-specific: use die instead";
|
|
+}
|
|
+
|
|
+sub setjmp {
|
|
+ unimpl "setjmp() is C-specific: use eval {} instead";
|
|
+}
|
|
+
|
|
+sub siglongjmp {
|
|
+ unimpl "siglongjmp() is C-specific: use die instead";
|
|
+}
|
|
+
|
|
+sub sigsetjmp {
|
|
+ unimpl "sigsetjmp() is C-specific: use eval {} instead";
|
|
+}
|
|
+
|
|
+sub kill {
|
|
+ usage "kill(pid, sig)" if @_ != 2;
|
|
+ CORE::kill $_[1], $_[0];
|
|
+}
|
|
+
|
|
+sub raise {
|
|
+ usage "raise(sig)" if @_ != 1;
|
|
+ CORE::kill $_[0], $$; # Is this good enough?
|
|
+}
|
|
+
|
|
+sub offsetof {
|
|
+ unimpl "offsetof() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub clearerr {
|
|
+ redef "IO::Handle::clearerr()";
|
|
+}
|
|
+
|
|
+sub fclose {
|
|
+ redef "IO::Handle::close()";
|
|
+}
|
|
+
|
|
+sub fdopen {
|
|
+ redef "IO::Handle::new_from_fd()";
|
|
+}
|
|
+
|
|
+sub feof {
|
|
+ redef "IO::Handle::eof()";
|
|
+}
|
|
+
|
|
+sub fgetc {
|
|
+ redef "IO::Handle::getc()";
|
|
+}
|
|
+
|
|
+sub fgets {
|
|
+ redef "IO::Handle::gets()";
|
|
+}
|
|
+
|
|
+sub fileno {
|
|
+ redef "IO::Handle::fileno()";
|
|
+}
|
|
+
|
|
+sub fopen {
|
|
+ redef "IO::File::open()";
|
|
+}
|
|
+
|
|
+sub fprintf {
|
|
+ unimpl "fprintf() is C-specific--use printf instead";
|
|
+}
|
|
+
|
|
+sub fputc {
|
|
+ unimpl "fputc() is C-specific--use print instead";
|
|
+}
|
|
+
|
|
+sub fputs {
|
|
+ unimpl "fputs() is C-specific--use print instead";
|
|
+}
|
|
+
|
|
+sub fread {
|
|
+ unimpl "fread() is C-specific--use read instead";
|
|
+}
|
|
+
|
|
+sub freopen {
|
|
+ unimpl "freopen() is C-specific--use open instead";
|
|
+}
|
|
+
|
|
+sub fscanf {
|
|
+ unimpl "fscanf() is C-specific--use <> and regular expressions instead";
|
|
+}
|
|
+
|
|
+sub fseek {
|
|
+ redef "IO::Seekable::seek()";
|
|
+}
|
|
+
|
|
+sub fsync {
|
|
+ redef "IO::Handle::sync()";
|
|
+}
|
|
+
|
|
+sub ferror {
|
|
+ redef "IO::Handle::error()";
|
|
+}
|
|
+
|
|
+sub fflush {
|
|
+ redef "IO::Handle::flush()";
|
|
+}
|
|
+
|
|
+sub fgetpos {
|
|
+ redef "IO::Seekable::getpos()";
|
|
+}
|
|
+
|
|
+sub fsetpos {
|
|
+ redef "IO::Seekable::setpos()";
|
|
+}
|
|
+
|
|
+sub ftell {
|
|
+ redef "IO::Seekable::tell()";
|
|
+}
|
|
+
|
|
+sub fwrite {
|
|
+ unimpl "fwrite() is C-specific--use print instead";
|
|
+}
|
|
+
|
|
+sub getc {
|
|
+ usage "getc(handle)" if @_ != 1;
|
|
+ CORE::getc($_[0]);
|
|
+}
|
|
+
|
|
+sub getchar {
|
|
+ usage "getchar()" if @_ != 0;
|
|
+ CORE::getc(STDIN);
|
|
+}
|
|
+
|
|
+sub gets {
|
|
+ usage "gets()" if @_ != 0;
|
|
+ scalar <STDIN>;
|
|
+}
|
|
+
|
|
+sub perror {
|
|
+ print STDERR "@_: " if @_;
|
|
+ print STDERR $!,"\n";
|
|
+}
|
|
+
|
|
+sub printf {
|
|
+ usage "printf(pattern, args...)" if @_ < 1;
|
|
+ CORE::printf STDOUT @_;
|
|
+}
|
|
+
|
|
+sub putc {
|
|
+ unimpl "putc() is C-specific--use print instead";
|
|
+}
|
|
+
|
|
+sub putchar {
|
|
+ unimpl "putchar() is C-specific--use print instead";
|
|
+}
|
|
+
|
|
+sub puts {
|
|
+ unimpl "puts() is C-specific--use print instead";
|
|
+}
|
|
+
|
|
+sub remove {
|
|
+ usage "remove(filename)" if @_ != 1;
|
|
+ (-d $_[0]) ? CORE::rmdir($_[0]) : CORE::unlink($_[0]);
|
|
+}
|
|
+
|
|
+sub rename {
|
|
+ usage "rename(oldfilename, newfilename)" if @_ != 2;
|
|
+ CORE::rename($_[0], $_[1]);
|
|
+}
|
|
+
|
|
+sub rewind {
|
|
+ usage "rewind(filehandle)" if @_ != 1;
|
|
+ CORE::seek($_[0],0,0);
|
|
+}
|
|
+
|
|
+sub scanf {
|
|
+ unimpl "scanf() is C-specific--use <> and regular expressions instead";
|
|
+}
|
|
+
|
|
+sub sprintf {
|
|
+ usage "sprintf(pattern,args)" if @_ == 0;
|
|
+ CORE::sprintf(shift,@_);
|
|
+}
|
|
+
|
|
+sub sscanf {
|
|
+ unimpl "sscanf() is C-specific--use regular expressions instead";
|
|
+}
|
|
+
|
|
+sub tmpfile {
|
|
+ redef "IO::File::new_tmpfile()";
|
|
+}
|
|
+
|
|
+sub ungetc {
|
|
+ redef "IO::Handle::ungetc()";
|
|
+}
|
|
+
|
|
+sub vfprintf {
|
|
+ unimpl "vfprintf() is C-specific";
|
|
+}
|
|
+
|
|
+sub vprintf {
|
|
+ unimpl "vprintf() is C-specific";
|
|
+}
|
|
+
|
|
+sub vsprintf {
|
|
+ unimpl "vsprintf() is C-specific";
|
|
+}
|
|
+
|
|
+sub abs {
|
|
+ usage "abs(x)" if @_ != 1;
|
|
+ CORE::abs($_[0]);
|
|
+}
|
|
+
|
|
+sub atexit {
|
|
+ unimpl "atexit() is C-specific: use END {} instead";
|
|
+}
|
|
+
|
|
+sub atof {
|
|
+ unimpl "atof() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub atoi {
|
|
+ unimpl "atoi() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub atol {
|
|
+ unimpl "atol() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub bsearch {
|
|
+ unimpl "bsearch() not supplied";
|
|
+}
|
|
+
|
|
+sub calloc {
|
|
+ unimpl "calloc() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub div {
|
|
+ unimpl "div() is C-specific, use /, % and int instead";
|
|
+}
|
|
+
|
|
+sub exit {
|
|
+ usage "exit(status)" if @_ != 1;
|
|
+ CORE::exit($_[0]);
|
|
+}
|
|
+
|
|
+sub free {
|
|
+ unimpl "free() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub getenv {
|
|
+ usage "getenv(name)" if @_ != 1;
|
|
+ $ENV{$_[0]};
|
|
+}
|
|
+
|
|
+sub labs {
|
|
+ unimpl "labs() is C-specific, use abs instead";
|
|
+}
|
|
+
|
|
+sub ldiv {
|
|
+ unimpl "ldiv() is C-specific, use /, % and int instead";
|
|
+}
|
|
+
|
|
+sub malloc {
|
|
+ unimpl "malloc() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub qsort {
|
|
+ unimpl "qsort() is C-specific, use sort instead";
|
|
+}
|
|
+
|
|
+sub rand {
|
|
+ unimpl "rand() is non-portable, use Perl's rand instead";
|
|
+}
|
|
+
|
|
+sub realloc {
|
|
+ unimpl "realloc() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub srand {
|
|
+ unimpl "srand()";
|
|
+}
|
|
+
|
|
+sub system {
|
|
+ usage "system(command)" if @_ != 1;
|
|
+ CORE::system($_[0]);
|
|
+}
|
|
+
|
|
+sub memchr {
|
|
+ unimpl "memchr() is C-specific, use index() instead";
|
|
+}
|
|
+
|
|
+sub memcmp {
|
|
+ unimpl "memcmp() is C-specific, use eq instead";
|
|
+}
|
|
+
|
|
+sub memcpy {
|
|
+ unimpl "memcpy() is C-specific, use = instead";
|
|
+}
|
|
+
|
|
+sub memmove {
|
|
+ unimpl "memmove() is C-specific, use = instead";
|
|
+}
|
|
+
|
|
+sub memset {
|
|
+ unimpl "memset() is C-specific, use x instead";
|
|
+}
|
|
+
|
|
+sub strcat {
|
|
+ unimpl "strcat() is C-specific, use .= instead";
|
|
+}
|
|
+
|
|
+sub strchr {
|
|
+ unimpl "strchr() is C-specific, use index() instead";
|
|
+}
|
|
+
|
|
+sub strcmp {
|
|
+ unimpl "strcmp() is C-specific, use eq instead";
|
|
+}
|
|
+
|
|
+sub strcpy {
|
|
+ unimpl "strcpy() is C-specific, use = instead";
|
|
+}
|
|
+
|
|
+sub strcspn {
|
|
+ unimpl "strcspn() is C-specific, use regular expressions instead";
|
|
+}
|
|
+
|
|
+sub strerror {
|
|
+ usage "strerror(errno)" if @_ != 1;
|
|
+ local $! = $_[0];
|
|
+ $! . "";
|
|
+}
|
|
+
|
|
+sub strlen {
|
|
+ unimpl "strlen() is C-specific, use length instead";
|
|
+}
|
|
+
|
|
+sub strncat {
|
|
+ unimpl "strncat() is C-specific, use .= instead";
|
|
+}
|
|
+
|
|
+sub strncmp {
|
|
+ unimpl "strncmp() is C-specific, use eq instead";
|
|
+}
|
|
+
|
|
+sub strncpy {
|
|
+ unimpl "strncpy() is C-specific, use = instead";
|
|
+}
|
|
+
|
|
+sub strpbrk {
|
|
+ unimpl "strpbrk() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub strrchr {
|
|
+ unimpl "strrchr() is C-specific, use rindex() instead";
|
|
+}
|
|
+
|
|
+sub strspn {
|
|
+ unimpl "strspn() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub strstr {
|
|
+ usage "strstr(big, little)" if @_ != 2;
|
|
+ CORE::index($_[0], $_[1]);
|
|
+}
|
|
+
|
|
+sub strtok {
|
|
+ unimpl "strtok() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub chmod {
|
|
+ usage "chmod(mode, filename)" if @_ != 2;
|
|
+ CORE::chmod($_[0], $_[1]);
|
|
+}
|
|
+
|
|
+sub fstat {
|
|
+ usage "fstat(fd)" if @_ != 1;
|
|
+ local *TMP;
|
|
+ CORE::open(TMP, "<&$_[0]"); # Gross.
|
|
+ my @l = CORE::stat(TMP);
|
|
+ CORE::close(TMP);
|
|
+ @l;
|
|
+}
|
|
+
|
|
+sub mkdir {
|
|
+ usage "mkdir(directoryname, mode)" if @_ != 2;
|
|
+ CORE::mkdir($_[0], $_[1]);
|
|
+}
|
|
+
|
|
+sub stat {
|
|
+ usage "stat(filename)" if @_ != 1;
|
|
+ CORE::stat($_[0]);
|
|
+}
|
|
+
|
|
+sub umask {
|
|
+ usage "umask(mask)" if @_ != 1;
|
|
+ CORE::umask($_[0]);
|
|
+}
|
|
+
|
|
+sub wait {
|
|
+ usage "wait()" if @_ != 0;
|
|
+ CORE::wait();
|
|
+}
|
|
+
|
|
+sub waitpid {
|
|
+ usage "waitpid(pid, options)" if @_ != 2;
|
|
+ CORE::waitpid($_[0], $_[1]);
|
|
+}
|
|
+
|
|
+sub gmtime {
|
|
+ usage "gmtime(time)" if @_ != 1;
|
|
+ CORE::gmtime($_[0]);
|
|
+}
|
|
+
|
|
+sub localtime {
|
|
+ usage "localtime(time)" if @_ != 1;
|
|
+ CORE::localtime($_[0]);
|
|
+}
|
|
+
|
|
+sub time {
|
|
+ usage "time()" if @_ != 0;
|
|
+ CORE::time;
|
|
+}
|
|
+
|
|
+sub alarm {
|
|
+ usage "alarm(seconds)" if @_ != 1;
|
|
+ CORE::alarm($_[0]);
|
|
+}
|
|
+
|
|
+sub chdir {
|
|
+ usage "chdir(directory)" if @_ != 1;
|
|
+ CORE::chdir($_[0]);
|
|
+}
|
|
+
|
|
+sub chown {
|
|
+ usage "chown(uid, gid, filename)" if @_ != 3;
|
|
+ CORE::chown($_[0], $_[1], $_[2]);
|
|
+}
|
|
+
|
|
+sub execl {
|
|
+ unimpl "execl() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub execle {
|
|
+ unimpl "execle() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub execlp {
|
|
+ unimpl "execlp() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub execv {
|
|
+ unimpl "execv() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub execve {
|
|
+ unimpl "execve() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub execvp {
|
|
+ unimpl "execvp() is C-specific, stopped";
|
|
+}
|
|
+
|
|
+sub fork {
|
|
+ usage "fork()" if @_ != 0;
|
|
+ CORE::fork;
|
|
+}
|
|
+
|
|
+sub getegid {
|
|
+ usage "getegid()" if @_ != 0;
|
|
+ $) + 0;
|
|
+}
|
|
+
|
|
+sub geteuid {
|
|
+ usage "geteuid()" if @_ != 0;
|
|
+ $> + 0;
|
|
+}
|
|
+
|
|
+sub getgid {
|
|
+ usage "getgid()" if @_ != 0;
|
|
+ $( + 0;
|
|
+}
|
|
+
|
|
+sub getgroups {
|
|
+ usage "getgroups()" if @_ != 0;
|
|
+ my %seen;
|
|
+ grep(!$seen{$_}++, split(' ', $) ));
|
|
+}
|
|
+
|
|
+sub getlogin {
|
|
+ usage "getlogin()" if @_ != 0;
|
|
+ CORE::getlogin();
|
|
+}
|
|
+
|
|
+sub getpgrp {
|
|
+ usage "getpgrp()" if @_ != 0;
|
|
+ CORE::getpgrp;
|
|
+}
|
|
+
|
|
+sub getpid {
|
|
+ usage "getpid()" if @_ != 0;
|
|
+ $$;
|
|
+}
|
|
+
|
|
+sub getppid {
|
|
+ usage "getppid()" if @_ != 0;
|
|
+ CORE::getppid;
|
|
+}
|
|
+
|
|
+sub getuid {
|
|
+ usage "getuid()" if @_ != 0;
|
|
+ $<;
|
|
+}
|
|
+
|
|
+sub isatty {
|
|
+ usage "isatty(filehandle)" if @_ != 1;
|
|
+ -t $_[0];
|
|
+}
|
|
+
|
|
+sub link {
|
|
+ usage "link(oldfilename, newfilename)" if @_ != 2;
|
|
+ CORE::link($_[0], $_[1]);
|
|
+}
|
|
+
|
|
+sub rmdir {
|
|
+ usage "rmdir(directoryname)" if @_ != 1;
|
|
+ CORE::rmdir($_[0]);
|
|
+}
|
|
+
|
|
+sub setbuf {
|
|
+ redef "IO::Handle::setbuf()";
|
|
+}
|
|
+
|
|
+sub setvbuf {
|
|
+ redef "IO::Handle::setvbuf()";
|
|
+}
|
|
+
|
|
+sub sleep {
|
|
+ usage "sleep(seconds)" if @_ != 1;
|
|
+ $_[0] - CORE::sleep($_[0]);
|
|
+}
|
|
+
|
|
+sub unlink {
|
|
+ usage "unlink(filename)" if @_ != 1;
|
|
+ CORE::unlink($_[0]);
|
|
+}
|
|
+
|
|
+sub utime {
|
|
+ usage "utime(filename, atime, mtime)" if @_ != 3;
|
|
+ CORE::utime($_[1], $_[2], $_[0]);
|
|
+}
|
|
+
|
|
+sub load_imports {
|
|
+%EXPORT_TAGS = (
|
|
+
|
|
+ assert_h => [qw(assert NDEBUG)],
|
|
+
|
|
+ ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower
|
|
+ isprint ispunct isspace isupper isxdigit tolower toupper)],
|
|
+
|
|
+ dirent_h => [],
|
|
+
|
|
+ errno_h => [qw(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 errno)],
|
|
+
|
|
+ fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK 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
|
|
+ creat
|
|
+ SEEK_CUR SEEK_END SEEK_SET
|
|
+ S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
|
|
+ S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID
|
|
+ S_IWGRP S_IWOTH S_IWUSR)],
|
|
+
|
|
+ float_h => [qw(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)],
|
|
+
|
|
+ grp_h => [],
|
|
+
|
|
+ limits_h => [qw( 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 _POSIX_ARG_MAX _POSIX_CHILD_MAX
|
|
+ _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT
|
|
+ _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX
|
|
+ _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX
|
|
+ _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)],
|
|
+
|
|
+ locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES
|
|
+ LC_MONETARY LC_NUMERIC LC_TIME NULL
|
|
+ localeconv setlocale)],
|
|
+
|
|
+ math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod
|
|
+ frexp ldexp log10 modf pow sinh tan tanh)],
|
|
+
|
|
+ pwd_h => [],
|
|
+
|
|
+ setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)],
|
|
+
|
|
+ signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK
|
|
+ SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM
|
|
+ SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL
|
|
+ SIGPIPE %SIGRT SIGRTMIN SIGRTMAX SIGQUIT SIGSEGV SIGSTOP
|
|
+ SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2
|
|
+ SIG_BLOCK SIG_DFL SIG_ERR SIG_IGN SIG_SETMASK SIG_UNBLOCK
|
|
+ raise sigaction signal sigpending sigprocmask sigsuspend)],
|
|
+
|
|
+ stdarg_h => [],
|
|
+
|
|
+ stddef_h => [qw(NULL offsetof)],
|
|
+
|
|
+ stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid
|
|
+ L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET
|
|
+ STREAM_MAX TMP_MAX stderr stdin stdout
|
|
+ clearerr fclose fdopen feof ferror fflush fgetc fgetpos
|
|
+ fgets fopen fprintf fputc fputs fread freopen
|
|
+ fscanf fseek fsetpos ftell fwrite getchar gets
|
|
+ perror putc putchar puts remove rewind
|
|
+ scanf setbuf setvbuf sscanf tmpfile tmpnam
|
|
+ ungetc vfprintf vprintf vsprintf)],
|
|
+
|
|
+ stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX
|
|
+ abort atexit atof atoi atol bsearch calloc div
|
|
+ free getenv labs ldiv malloc mblen mbstowcs mbtowc
|
|
+ qsort realloc strtod strtol strtoul wcstombs wctomb)],
|
|
+
|
|
+ string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat
|
|
+ strchr strcmp strcoll strcpy strcspn strerror strlen
|
|
+ strncat strncmp strncpy strpbrk strrchr strspn strstr
|
|
+ strtok strxfrm)],
|
|
+
|
|
+ sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
|
|
+ S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG
|
|
+ S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR
|
|
+ fstat mkfifo)],
|
|
+
|
|
+ sys_times_h => [],
|
|
+
|
|
+ sys_types_h => [],
|
|
+
|
|
+ sys_utsname_h => [qw(uname)],
|
|
+
|
|
+ sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED
|
|
+ WNOHANG WSTOPSIG WTERMSIG WUNTRACED)],
|
|
+
|
|
+ termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400
|
|
+ B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL
|
|
+ CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK
|
|
+ ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR
|
|
+ INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST
|
|
+ PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION
|
|
+ TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW
|
|
+ TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART
|
|
+ VSTOP VSUSP VTIME
|
|
+ cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain
|
|
+ tcflow tcflush tcgetattr tcsendbreak tcsetattr )],
|
|
+
|
|
+ time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime
|
|
+ difftime mktime strftime tzset tzname)],
|
|
+
|
|
+ unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET
|
|
+ STDERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK
|
|
+ _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_CHOWN_RESTRICTED
|
|
+ _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS
|
|
+ _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX
|
|
+ _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL
|
|
+ _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS
|
|
+ _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
|
|
+ _exit access ctermid cuserid
|
|
+ dup2 dup execl execle execlp execv execve execvp
|
|
+ fpathconf fsync getcwd getegid geteuid getgid getgroups
|
|
+ getpid getuid isatty lseek pathconf pause setgid setpgid
|
|
+ setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)],
|
|
+
|
|
+ utime_h => [],
|
|
+
|
|
+);
|
|
+
|
|
+# Exporter::export_tags();
|
|
+{
|
|
+ # De-duplicate the export list:
|
|
+ my %export;
|
|
+ @export{map {@$_} values %EXPORT_TAGS} = ();
|
|
+ # Doing the de-dup with a temporary hash has the advantage that the SVs in
|
|
+ # @EXPORT are actually shared hash key sacalars, which will save some memory.
|
|
+ push @EXPORT, keys %export;
|
|
+}
|
|
+
|
|
+@EXPORT_OK = qw(
|
|
+ abs
|
|
+ alarm
|
|
+ atan2
|
|
+ chdir
|
|
+ chmod
|
|
+ chown
|
|
+ close
|
|
+ closedir
|
|
+ cos
|
|
+ exit
|
|
+ exp
|
|
+ fcntl
|
|
+ fileno
|
|
+ fork
|
|
+ getc
|
|
+ getgrgid
|
|
+ getgrnam
|
|
+ getlogin
|
|
+ getpgrp
|
|
+ getppid
|
|
+ getpwnam
|
|
+ getpwuid
|
|
+ gmtime
|
|
+ isatty
|
|
+ kill
|
|
+ lchown
|
|
+ link
|
|
+ localtime
|
|
+ log
|
|
+ mkdir
|
|
+ nice
|
|
+ open
|
|
+ opendir
|
|
+ pipe
|
|
+ printf
|
|
+ rand
|
|
+ read
|
|
+ readdir
|
|
+ rename
|
|
+ rewinddir
|
|
+ rmdir
|
|
+ sin
|
|
+ sleep
|
|
+ sprintf
|
|
+ sqrt
|
|
+ srand
|
|
+ stat
|
|
+ system
|
|
+ time
|
|
+ times
|
|
+ umask
|
|
+ unlink
|
|
+ utime
|
|
+ wait
|
|
+ waitpid
|
|
+ write
|
|
+);
|
|
+
|
|
+require Exporter;
|
|
+}
|
|
+
|
|
+package POSIX::SigAction;
|
|
+
|
|
+sub new { bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3] || 0, SAFE => 0}, $_[0] }
|
|
+sub handler { $_[0]->{HANDLER} = $_[1] if @_ > 1; $_[0]->{HANDLER} };
|
|
+sub mask { $_[0]->{MASK} = $_[1] if @_ > 1; $_[0]->{MASK} };
|
|
+sub flags { $_[0]->{FLAGS} = $_[1] if @_ > 1; $_[0]->{FLAGS} };
|
|
+sub safe { $_[0]->{SAFE} = $_[1] if @_ > 1; $_[0]->{SAFE} };
|
|
+
|
|
+package POSIX::SigRt;
|
|
+
|
|
+
|
|
+sub _init {
|
|
+ $_SIGRTMIN = &POSIX::SIGRTMIN;
|
|
+ $_SIGRTMAX = &POSIX::SIGRTMAX;
|
|
+ $_sigrtn = $_SIGRTMAX - $_SIGRTMIN;
|
|
+}
|
|
+
|
|
+sub _croak {
|
|
+ &_init unless defined $_sigrtn;
|
|
+ die "POSIX::SigRt not available" unless defined $_sigrtn && $_sigrtn > 0;
|
|
+}
|
|
+
|
|
+sub _getsig {
|
|
+ &_croak;
|
|
+ my $rtsig = $_[0];
|
|
+ # Allow (SIGRT)?MIN( + n)?, a common idiom when doing these things in C.
|
|
+ $rtsig = $_SIGRTMIN + ($1 || 0)
|
|
+ if $rtsig =~ /^(?:(?:SIG)?RT)?MIN(\s*\+\s*(\d+))?$/;
|
|
+ return $rtsig;
|
|
+}
|
|
+
|
|
+sub _exist {
|
|
+ my $rtsig = _getsig($_[1]);
|
|
+ my $ok = $rtsig >= $_SIGRTMIN && $rtsig <= $_SIGRTMAX;
|
|
+ ($rtsig, $ok);
|
|
+}
|
|
+
|
|
+sub _check {
|
|
+ my ($rtsig, $ok) = &_exist;
|
|
+ die "No POSIX::SigRt signal $_[1] (valid range SIGRTMIN..SIGRTMAX, or $_SIGRTMIN..$_SIGRTMAX)"
|
|
+ unless $ok;
|
|
+ return $rtsig;
|
|
+}
|
|
+
|
|
+sub new {
|
|
+ my ($rtsig, $handler, $flags) = @_;
|
|
+ my $sigset = POSIX::SigSet->new($rtsig);
|
|
+ my $sigact = POSIX::SigAction->new($handler,
|
|
+ $sigset,
|
|
+ $flags);
|
|
+ POSIX::sigaction($rtsig, $sigact);
|
|
+}
|
|
+
|
|
+sub EXISTS { &_exist }
|
|
+sub FETCH { my $rtsig = &_check;
|
|
+ my $oa = POSIX::SigAction->new();
|
|
+ POSIX::sigaction($rtsig, undef, $oa);
|
|
+ return $oa->{HANDLER} }
|
|
+sub STORE { my $rtsig = &_check; new($rtsig, $_[2], $SIGACTION_FLAGS) }
|
|
+sub DELETE { delete $SIG{ &_check } }
|
|
+sub CLEAR { &_exist; delete @SIG{ &POSIX::SIGRTMIN .. &POSIX::SIGRTMAX } }
|
|
+sub SCALAR { &_croak; $_sigrtn + 1 }
|
|
diff --git a/ext/POSIX/lib/POSIX.pod b/ext/POSIX/lib/POSIX.pod
|
|
new file mode 100644
|
|
index 0000000..64852e9
|
|
--- /dev/null
|
|
+++ b/ext/POSIX/lib/POSIX.pod
|
|
@@ -0,0 +1,2218 @@
|
|
+=head1 NAME
|
|
+
|
|
+POSIX - Perl interface to IEEE Std 1003.1
|
|
+
|
|
+=head1 SYNOPSIS
|
|
+
|
|
+ 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
|
|
+
|
|
+=head1 DESCRIPTION
|
|
+
|
|
+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.
|
|
+
|
|
+I<Everything is exported by default> with the exception of any POSIX
|
|
+functions with the same name as a built-in Perl function, such as
|
|
+C<abs>, C<alarm>, C<rmdir>, C<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 C<use
|
|
+POSIX ()> and then use the fully qualified names (ie. C<POSIX::SEEK_END>).
|
|
+
|
|
+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 L<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.
|
|
+
|
|
+=head1 NOTE
|
|
+
|
|
+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.
|
|
+
|
|
+=head1 CAVEATS
|
|
+
|
|
+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.
|
|
+
|
|
+=head1 FUNCTIONS
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item _exit
|
|
+
|
|
+This is identical to the C function C<_exit()>. It exits the program
|
|
+immediately which means among other things buffered I/O is B<not> flushed.
|
|
+
|
|
+Note that when using threads and in Linux this is B<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.
|
|
+
|
|
+=item abort
|
|
+
|
|
+This is identical to the C function C<abort()>. It terminates the
|
|
+process with a C<SIGABRT> signal unless caught by a signal handler or
|
|
+if the handler does not return normally (it e.g. does a C<longjmp>).
|
|
+
|
|
+=item abs
|
|
+
|
|
+This is identical to Perl's builtin C<abs()> function, returning
|
|
+the absolute value of its numerical argument.
|
|
+
|
|
+=item access
|
|
+
|
|
+Determines the accessibility of a file.
|
|
+
|
|
+ if( POSIX::access( "/", &POSIX::R_OK ) ){
|
|
+ print "have read permission\n";
|
|
+ }
|
|
+
|
|
+Returns C<undef> on failure. Note: do not use C<access()> for
|
|
+security purposes. Between the C<access()> call and the operation
|
|
+you are preparing for the permissions might change: a classic
|
|
+I<race condition>.
|
|
+
|
|
+=item acos
|
|
+
|
|
+This is identical to the C function C<acos()>, returning
|
|
+the arcus cosine of its numerical argument. See also L<Math::Trig>.
|
|
+
|
|
+=item alarm
|
|
+
|
|
+This is identical to Perl's builtin C<alarm()> function,
|
|
+either for arming or disarming the C<SIGARLM> timer.
|
|
+
|
|
+=item asctime
|
|
+
|
|
+This is identical to the C function C<asctime()>. It returns
|
|
+a string of the form
|
|
+
|
|
+ "Fri Jun 2 18:22:13 2000\n\0"
|
|
+
|
|
+and it is called thusly
|
|
+
|
|
+ $asctime = asctime($sec, $min, $hour, $mday, $mon, $year,
|
|
+ $wday, $yday, $isdst);
|
|
+
|
|
+The C<$mon> is zero-based: January equals C<0>. The C<$year> is
|
|
+1900-based: 2001 equals C<101>. C<$wday> and C<$yday> default to zero
|
|
+(and are usually ignored anyway), and C<$isdst> defaults to -1.
|
|
+
|
|
+=item asin
|
|
+
|
|
+This is identical to the C function C<asin()>, returning
|
|
+the arcus sine of its numerical argument. See also L<Math::Trig>.
|
|
+
|
|
+=item assert
|
|
+
|
|
+Unimplemented, but you can use L<perlfunc/die> and the L<Carp> module
|
|
+to achieve similar things.
|
|
+
|
|
+=item atan
|
|
+
|
|
+This is identical to the C function C<atan()>, returning the
|
|
+arcus tangent of its numerical argument. See also L<Math::Trig>.
|
|
+
|
|
+=item atan2
|
|
+
|
|
+This is identical to Perl's builtin C<atan2()> function, returning
|
|
+the arcus tangent defined by its two numerical arguments, the I<y>
|
|
+coordinate and the I<x> coordinate. See also L<Math::Trig>.
|
|
+
|
|
+=item atexit
|
|
+
|
|
+atexit() is C-specific: use C<END {}> instead, see L<perlsub>.
|
|
+
|
|
+=item atof
|
|
+
|
|
+atof() is C-specific. Perl converts strings to numbers transparently.
|
|
+If you need to force a scalar to a number, add a zero to it.
|
|
+
|
|
+=item atoi
|
|
+
|
|
+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 L<perlfunc/int>.
|
|
+
|
|
+=item atol
|
|
+
|
|
+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 L<perlfunc/int>.
|
|
+
|
|
+=item bsearch
|
|
+
|
|
+bsearch() not supplied. For doing binary search on wordlists,
|
|
+see L<Search::Dict>.
|
|
+
|
|
+=item calloc
|
|
+
|
|
+calloc() is C-specific. Perl does memory management transparently.
|
|
+
|
|
+=item ceil
|
|
+
|
|
+This is identical to the C function C<ceil()>, returning the smallest
|
|
+integer value greater than or equal to the given numerical argument.
|
|
+
|
|
+=item chdir
|
|
+
|
|
+This is identical to Perl's builtin C<chdir()> function, allowing
|
|
+one to change the working (default) directory, see L<perlfunc/chdir>.
|
|
+
|
|
+=item chmod
|
|
+
|
|
+This is identical to Perl's builtin C<chmod()> function, allowing
|
|
+one to change file and directory permissions, see L<perlfunc/chmod>.
|
|
+
|
|
+=item chown
|
|
+
|
|
+This is identical to Perl's builtin C<chown()> function, allowing one
|
|
+to change file and directory owners and groups, see L<perlfunc/chown>.
|
|
+
|
|
+=item clearerr
|
|
+
|
|
+Use the method C<IO::Handle::clearerr()> instead, to reset the error
|
|
+state (if any) and EOF state (if any) of the given stream.
|
|
+
|
|
+=item clock
|
|
+
|
|
+This is identical to the C function C<clock()>, returning the
|
|
+amount of spent processor time in microseconds.
|
|
+
|
|
+=item close
|
|
+
|
|
+Close the file. This uses file descriptors such as those obtained by calling
|
|
+C<POSIX::open>.
|
|
+
|
|
+ $fd = POSIX::open( "foo", &POSIX::O_RDONLY );
|
|
+ POSIX::close( $fd );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+See also L<perlfunc/close>.
|
|
+
|
|
+=item closedir
|
|
+
|
|
+This is identical to Perl's builtin C<closedir()> function for closing
|
|
+a directory handle, see L<perlfunc/closedir>.
|
|
+
|
|
+=item cos
|
|
+
|
|
+This is identical to Perl's builtin C<cos()> function, for returning
|
|
+the cosine of its numerical argument, see L<perlfunc/cos>.
|
|
+See also L<Math::Trig>.
|
|
+
|
|
+=item cosh
|
|
+
|
|
+This is identical to the C function C<cosh()>, for returning
|
|
+the hyperbolic cosine of its numeric argument. See also L<Math::Trig>.
|
|
+
|
|
+=item creat
|
|
+
|
|
+Create a new file. This returns a file descriptor like the ones returned by
|
|
+C<POSIX::open>. Use C<POSIX::close> to close the file.
|
|
+
|
|
+ $fd = POSIX::creat( "foo", 0611 );
|
|
+ POSIX::close( $fd );
|
|
+
|
|
+See also L<perlfunc/sysopen> and its C<O_CREAT> flag.
|
|
+
|
|
+=item ctermid
|
|
+
|
|
+Generates the path name for the controlling terminal.
|
|
+
|
|
+ $path = POSIX::ctermid();
|
|
+
|
|
+=item ctime
|
|
+
|
|
+This is identical to the C function C<ctime()> and equivalent
|
|
+to C<asctime(localtime(...))>, see L</asctime> and L</localtime>.
|
|
+
|
|
+=item cuserid
|
|
+
|
|
+Get the login name of the owner of the current process.
|
|
+
|
|
+ $name = POSIX::cuserid();
|
|
+
|
|
+=item difftime
|
|
+
|
|
+This is identical to the C function C<difftime()>, for returning
|
|
+the time difference (in seconds) between two times (as returned
|
|
+by C<time()>), see L</time>.
|
|
+
|
|
+=item div
|
|
+
|
|
+div() is C-specific, use L<perlfunc/int> on the usual C</> division and
|
|
+the modulus C<%>.
|
|
+
|
|
+=item dup
|
|
+
|
|
+This is similar to the C function C<dup()>, for duplicating a file
|
|
+descriptor.
|
|
+
|
|
+This uses file descriptors such as those obtained by calling
|
|
+C<POSIX::open>.
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item dup2
|
|
+
|
|
+This is similar to the C function C<dup2()>, for duplicating a file
|
|
+descriptor to an another known file descriptor.
|
|
+
|
|
+This uses file descriptors such as those obtained by calling
|
|
+C<POSIX::open>.
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item errno
|
|
+
|
|
+Returns the value of errno.
|
|
+
|
|
+ $errno = POSIX::errno();
|
|
+
|
|
+This identical to the numerical values of the C<$!>, see L<perlvar/$ERRNO>.
|
|
+
|
|
+=item execl
|
|
+
|
|
+execl() is C-specific, see L<perlfunc/exec>.
|
|
+
|
|
+=item execle
|
|
+
|
|
+execle() is C-specific, see L<perlfunc/exec>.
|
|
+
|
|
+=item execlp
|
|
+
|
|
+execlp() is C-specific, see L<perlfunc/exec>.
|
|
+
|
|
+=item execv
|
|
+
|
|
+execv() is C-specific, see L<perlfunc/exec>.
|
|
+
|
|
+=item execve
|
|
+
|
|
+execve() is C-specific, see L<perlfunc/exec>.
|
|
+
|
|
+=item execvp
|
|
+
|
|
+execvp() is C-specific, see L<perlfunc/exec>.
|
|
+
|
|
+=item exit
|
|
+
|
|
+This is identical to Perl's builtin C<exit()> function for exiting the
|
|
+program, see L<perlfunc/exit>.
|
|
+
|
|
+=item exp
|
|
+
|
|
+This is identical to Perl's builtin C<exp()> function for
|
|
+returning the exponent (I<e>-based) of the numerical argument,
|
|
+see L<perlfunc/exp>.
|
|
+
|
|
+=item fabs
|
|
+
|
|
+This is identical to Perl's builtin C<abs()> function for returning
|
|
+the absolute value of the numerical argument, see L<perlfunc/abs>.
|
|
+
|
|
+=item fclose
|
|
+
|
|
+Use method C<IO::Handle::close()> instead, or see L<perlfunc/close>.
|
|
+
|
|
+=item fcntl
|
|
+
|
|
+This is identical to Perl's builtin C<fcntl()> function,
|
|
+see L<perlfunc/fcntl>.
|
|
+
|
|
+=item fdopen
|
|
+
|
|
+Use method C<IO::Handle::new_from_fd()> instead, or see L<perlfunc/open>.
|
|
+
|
|
+=item feof
|
|
+
|
|
+Use method C<IO::Handle::eof()> instead, or see L<perlfunc/eof>.
|
|
+
|
|
+=item ferror
|
|
+
|
|
+Use method C<IO::Handle::error()> instead.
|
|
+
|
|
+=item fflush
|
|
+
|
|
+Use method C<IO::Handle::flush()> instead.
|
|
+See also L<perlvar/$OUTPUT_AUTOFLUSH>.
|
|
+
|
|
+=item fgetc
|
|
+
|
|
+Use method C<IO::Handle::getc()> instead, or see L<perlfunc/read>.
|
|
+
|
|
+=item fgetpos
|
|
+
|
|
+Use method C<IO::Seekable::getpos()> instead, or see L<L/seek>.
|
|
+
|
|
+=item fgets
|
|
+
|
|
+Use method C<IO::Handle::gets()> instead. Similar to E<lt>E<gt>, also known
|
|
+as L<perlfunc/readline>.
|
|
+
|
|
+=item fileno
|
|
+
|
|
+Use method C<IO::Handle::fileno()> instead, or see L<perlfunc/fileno>.
|
|
+
|
|
+=item floor
|
|
+
|
|
+This is identical to the C function C<floor()>, returning the largest
|
|
+integer value less than or equal to the numerical argument.
|
|
+
|
|
+=item fmod
|
|
+
|
|
+This is identical to the C function C<fmod()>.
|
|
+
|
|
+ $r = fmod($x, $y);
|
|
+
|
|
+It returns the remainder C<$r = $x - $n*$y>, where C<$n = trunc($x/$y)>.
|
|
+The C<$r> has the same sign as C<$x> and magnitude (absolute value)
|
|
+less than the magnitude of C<$y>.
|
|
+
|
|
+=item fopen
|
|
+
|
|
+Use method C<IO::File::open()> instead, or see L<perlfunc/open>.
|
|
+
|
|
+=item fork
|
|
+
|
|
+This is identical to Perl's builtin C<fork()> function
|
|
+for duplicating the current process, see L<perlfunc/fork>
|
|
+and L<perlfork> if you are in Windows.
|
|
+
|
|
+=item fpathconf
|
|
+
|
|
+Retrieves the value of a configurable limit on a file or directory. This
|
|
+uses file descriptors such as those obtained by calling C<POSIX::open>.
|
|
+
|
|
+The following will determine the maximum length of the longest allowable
|
|
+pathname on the filesystem which holds C</var/foo>.
|
|
+
|
|
+ $fd = POSIX::open( "/var/foo", &POSIX::O_RDONLY );
|
|
+ $path_max = POSIX::fpathconf( $fd, &POSIX::_PC_PATH_MAX );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item fprintf
|
|
+
|
|
+fprintf() is C-specific, see L<perlfunc/printf> instead.
|
|
+
|
|
+=item fputc
|
|
+
|
|
+fputc() is C-specific, see L<perlfunc/print> instead.
|
|
+
|
|
+=item fputs
|
|
+
|
|
+fputs() is C-specific, see L<perlfunc/print> instead.
|
|
+
|
|
+=item fread
|
|
+
|
|
+fread() is C-specific, see L<perlfunc/read> instead.
|
|
+
|
|
+=item free
|
|
+
|
|
+free() is C-specific. Perl does memory management transparently.
|
|
+
|
|
+=item freopen
|
|
+
|
|
+freopen() is C-specific, see L<perlfunc/open> instead.
|
|
+
|
|
+=item frexp
|
|
+
|
|
+Return the mantissa and exponent of a floating-point number.
|
|
+
|
|
+ ($mantissa, $exponent) = POSIX::frexp( 1.234e56 );
|
|
+
|
|
+=item fscanf
|
|
+
|
|
+fscanf() is C-specific, use E<lt>E<gt> and regular expressions instead.
|
|
+
|
|
+=item fseek
|
|
+
|
|
+Use method C<IO::Seekable::seek()> instead, or see L<perlfunc/seek>.
|
|
+
|
|
+=item fsetpos
|
|
+
|
|
+Use method C<IO::Seekable::setpos()> instead, or seek L<perlfunc/seek>.
|
|
+
|
|
+=item fstat
|
|
+
|
|
+Get file status. This uses file descriptors such as those obtained by
|
|
+calling C<POSIX::open>. The data returned is identical to the data from
|
|
+Perl's builtin C<stat> function.
|
|
+
|
|
+ $fd = POSIX::open( "foo", &POSIX::O_RDONLY );
|
|
+ @stats = POSIX::fstat( $fd );
|
|
+
|
|
+=item fsync
|
|
+
|
|
+Use method C<IO::Handle::sync()> instead.
|
|
+
|
|
+=item ftell
|
|
+
|
|
+Use method C<IO::Seekable::tell()> instead, or see L<perlfunc/tell>.
|
|
+
|
|
+=item fwrite
|
|
+
|
|
+fwrite() is C-specific, see L<perlfunc/print> instead.
|
|
+
|
|
+=item getc
|
|
+
|
|
+This is identical to Perl's builtin C<getc()> function,
|
|
+see L<perlfunc/getc>.
|
|
+
|
|
+=item getchar
|
|
+
|
|
+Returns one character from STDIN. Identical to Perl's C<getc()>,
|
|
+see L<perlfunc/getc>.
|
|
+
|
|
+=item getcwd
|
|
+
|
|
+Returns the name of the current working directory.
|
|
+See also L<Cwd>.
|
|
+
|
|
+=item getegid
|
|
+
|
|
+Returns the effective group identifier. Similar to Perl' s builtin
|
|
+variable C<$(>, see L<perlvar/$EGID>.
|
|
+
|
|
+=item getenv
|
|
+
|
|
+Returns the value of the specified environment variable.
|
|
+The same information is available through the C<%ENV> array.
|
|
+
|
|
+=item geteuid
|
|
+
|
|
+Returns the effective user identifier. Identical to Perl's builtin C<$E<gt>>
|
|
+variable, see L<perlvar/$EUID>.
|
|
+
|
|
+=item getgid
|
|
+
|
|
+Returns the user's real group identifier. Similar to Perl's builtin
|
|
+variable C<$)>, see L<perlvar/$GID>.
|
|
+
|
|
+=item getgrgid
|
|
+
|
|
+This is identical to Perl's builtin C<getgrgid()> function for
|
|
+returning group entries by group identifiers, see
|
|
+L<perlfunc/getgrgid>.
|
|
+
|
|
+=item getgrnam
|
|
+
|
|
+This is identical to Perl's builtin C<getgrnam()> function for
|
|
+returning group entries by group names, see L<perlfunc/getgrnam>.
|
|
+
|
|
+=item getgroups
|
|
+
|
|
+Returns the ids of the user's supplementary groups. Similar to Perl's
|
|
+builtin variable C<$)>, see L<perlvar/$GID>.
|
|
+
|
|
+=item getlogin
|
|
+
|
|
+This is identical to Perl's builtin C<getlogin()> function for
|
|
+returning the user name associated with the current session, see
|
|
+L<perlfunc/getlogin>.
|
|
+
|
|
+=item getpgrp
|
|
+
|
|
+This is identical to Perl's builtin C<getpgrp()> function for
|
|
+returning the process group identifier of the current process, see
|
|
+L<perlfunc/getpgrp>.
|
|
+
|
|
+=item getpid
|
|
+
|
|
+Returns the process identifier. Identical to Perl's builtin
|
|
+variable C<$$>, see L<perlvar/$PID>.
|
|
+
|
|
+=item getppid
|
|
+
|
|
+This is identical to Perl's builtin C<getppid()> function for
|
|
+returning the process identifier of the parent process of the current
|
|
+process , see L<perlfunc/getppid>.
|
|
+
|
|
+=item getpwnam
|
|
+
|
|
+This is identical to Perl's builtin C<getpwnam()> function for
|
|
+returning user entries by user names, see L<perlfunc/getpwnam>.
|
|
+
|
|
+=item getpwuid
|
|
+
|
|
+This is identical to Perl's builtin C<getpwuid()> function for
|
|
+returning user entries by user identifiers, see L<perlfunc/getpwuid>.
|
|
+
|
|
+=item gets
|
|
+
|
|
+Returns one line from C<STDIN>, similar to E<lt>E<gt>, also known
|
|
+as the C<readline()> function, see L<perlfunc/readline>.
|
|
+
|
|
+B<NOTE>: if you have C programs that still use C<gets()>, be very
|
|
+afraid. The C<gets()> function is a source of endless grief because
|
|
+it has no buffer overrun checks. It should B<never> be used. The
|
|
+C<fgets()> function should be preferred instead.
|
|
+
|
|
+=item getuid
|
|
+
|
|
+Returns the user's identifier. Identical to Perl's builtin C<$E<lt>> variable,
|
|
+see L<perlvar/$UID>.
|
|
+
|
|
+=item gmtime
|
|
+
|
|
+This is identical to Perl's builtin C<gmtime()> function for
|
|
+converting seconds since the epoch to a date in Greenwich Mean Time,
|
|
+see L<perlfunc/gmtime>.
|
|
+
|
|
+=item isalnum
|
|
+
|
|
+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 C<isalnum>. Does not work on
|
|
+Unicode characters code point 256 or higher. Consider using regular
|
|
+expressions and the C</[[:alnum:]]/> construct instead, or possibly
|
|
+the C</\w/> construct.
|
|
+
|
|
+=item isalpha
|
|
+
|
|
+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 C<isalpha>. Does not work
|
|
+on Unicode characters code point 256 or higher. Consider using regular
|
|
+expressions and the C</[[:alpha:]]/> construct instead.
|
|
+
|
|
+=item isatty
|
|
+
|
|
+Returns a boolean indicating whether the specified filehandle is connected
|
|
+to a tty. Similar to the C<-t> operator, see L<perlfunc/-X>.
|
|
+
|
|
+=item iscntrl
|
|
+
|
|
+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 C<iscntrl>. Does not work
|
|
+on Unicode characters code point 256 or higher. Consider using regular
|
|
+expressions and the C</[[:cntrl:]]/> construct instead.
|
|
+
|
|
+=item isdigit
|
|
+
|
|
+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 C<isdigit> (unlikely, but
|
|
+still possible). Does not work on Unicode characters code point 256
|
|
+or higher. Consider using regular expressions and the C</[[:digit:]]/>
|
|
+construct instead, or the C</\d/> construct.
|
|
+
|
|
+=item isgraph
|
|
+
|
|
+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 C<isgraph>. Does not work
|
|
+on Unicode characters code point 256 or higher. Consider using regular
|
|
+expressions and the C</[[:graph:]]/> construct instead.
|
|
+
|
|
+=item islower
|
|
+
|
|
+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 C<islower>. Does not work
|
|
+on Unicode characters code point 256 or higher. Consider using regular
|
|
+expressions and the C</[[:lower:]]/> construct instead. Do B<not> use
|
|
+C</[a-z]/>.
|
|
+
|
|
+=item isprint
|
|
+
|
|
+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 C<isprint>. Does not work
|
|
+on Unicode characters code point 256 or higher. Consider using regular
|
|
+expressions and the C</[[:print:]]/> construct instead.
|
|
+
|
|
+=item ispunct
|
|
+
|
|
+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 C<ispunct>. Does not work
|
|
+on Unicode characters code point 256 or higher. Consider using regular
|
|
+expressions and the C</[[:punct:]]/> construct instead.
|
|
+
|
|
+=item isspace
|
|
+
|
|
+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 C<isspace>. Does not work
|
|
+on Unicode characters code point 256 or higher. Consider using regular
|
|
+expressions and the C</[[:space:]]/> construct instead, or the C</\s/>
|
|
+construct. (Note that C</\s/> and C</[[:space:]]/> are slightly
|
|
+different in that C</[[:space:]]/> can normally match a vertical tab,
|
|
+while C</\s/> does not.)
|
|
+
|
|
+=item isupper
|
|
+
|
|
+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 C<isupper>. Does not work
|
|
+on Unicode characters code point 256 or higher. Consider using regular
|
|
+expressions and the C</[[:upper:]]/> construct instead. Do B<not> use
|
|
+C</[A-Z]/>.
|
|
+
|
|
+=item isxdigit
|
|
+
|
|
+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 C<isxdigit> (unlikely, but still possible).
|
|
+Does not work on Unicode characters code point 256 or higher.
|
|
+Consider using regular expressions and the C</[[:xdigit:]]/>
|
|
+construct instead, or simply C</[0-9a-f]/i>.
|
|
+
|
|
+=item kill
|
|
+
|
|
+This is identical to Perl's builtin C<kill()> function for sending
|
|
+signals to processes (often to terminate them), see L<perlfunc/kill>.
|
|
+
|
|
+=item labs
|
|
+
|
|
+(For returning absolute values of long integers.)
|
|
+labs() is C-specific, see L<perlfunc/abs> instead.
|
|
+
|
|
+=item lchown
|
|
+
|
|
+This is identical to the C function, except the order of arguments is
|
|
+consistent with Perl's builtin C<chown()> with the added restriction
|
|
+of only one path, not an list of paths. Does the same thing as the
|
|
+C<chown()> function but changes the owner of a symbolic link instead
|
|
+of the file the symbolic link points to.
|
|
+
|
|
+=item ldexp
|
|
+
|
|
+This is identical to the C function C<ldexp()>
|
|
+for multiplying floating point numbers with powers of two.
|
|
+
|
|
+ $x_quadrupled = POSIX::ldexp($x, 2);
|
|
+
|
|
+=item ldiv
|
|
+
|
|
+(For computing dividends of long integers.)
|
|
+ldiv() is C-specific, use C</> and C<int()> instead.
|
|
+
|
|
+=item link
|
|
+
|
|
+This is identical to Perl's builtin C<link()> function
|
|
+for creating hard links into files, see L<perlfunc/link>.
|
|
+
|
|
+=item localeconv
|
|
+
|
|
+Get numeric formatting information. Returns a reference to a hash
|
|
+containing the current locale formatting values.
|
|
+
|
|
+Here is how to query the database for the B<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";
|
|
+
|
|
+=item localtime
|
|
+
|
|
+This is identical to Perl's builtin C<localtime()> function for
|
|
+converting seconds since the epoch to a date see L<perlfunc/localtime>.
|
|
+
|
|
+=item log
|
|
+
|
|
+This is identical to Perl's builtin C<log()> function,
|
|
+returning the natural (I<e>-based) logarithm of the numerical argument,
|
|
+see L<perlfunc/log>.
|
|
+
|
|
+=item log10
|
|
+
|
|
+This is identical to the C function C<log10()>,
|
|
+returning the 10-base logarithm of the numerical argument.
|
|
+You can also use
|
|
+
|
|
+ sub log10 { log($_[0]) / log(10) }
|
|
+
|
|
+or
|
|
+
|
|
+ sub log10 { log($_[0]) / 2.30258509299405 }
|
|
+
|
|
+or
|
|
+
|
|
+ sub log10 { log($_[0]) * 0.434294481903252 }
|
|
+
|
|
+=item longjmp
|
|
+
|
|
+longjmp() is C-specific: use L<perlfunc/die> instead.
|
|
+
|
|
+=item lseek
|
|
+
|
|
+Move the file's read/write position. This uses file descriptors such as
|
|
+those obtained by calling C<POSIX::open>.
|
|
+
|
|
+ $fd = POSIX::open( "foo", &POSIX::O_RDONLY );
|
|
+ $off_t = POSIX::lseek( $fd, 0, &POSIX::SEEK_SET );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item malloc
|
|
+
|
|
+malloc() is C-specific. Perl does memory management transparently.
|
|
+
|
|
+=item mblen
|
|
+
|
|
+This is identical to the C function C<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.
|
|
+
|
|
+=item mbstowcs
|
|
+
|
|
+This is identical to the C function C<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.
|
|
+
|
|
+=item mbtowc
|
|
+
|
|
+This is identical to the C function C<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.
|
|
+
|
|
+=item memchr
|
|
+
|
|
+memchr() is C-specific, see L<perlfunc/index> instead.
|
|
+
|
|
+=item memcmp
|
|
+
|
|
+memcmp() is C-specific, use C<eq> instead, see L<perlop>.
|
|
+
|
|
+=item memcpy
|
|
+
|
|
+memcpy() is C-specific, use C<=>, see L<perlop>, or see L<perlfunc/substr>.
|
|
+
|
|
+=item memmove
|
|
+
|
|
+memmove() is C-specific, use C<=>, see L<perlop>, or see L<perlfunc/substr>.
|
|
+
|
|
+=item memset
|
|
+
|
|
+memset() is C-specific, use C<x> instead, see L<perlop>.
|
|
+
|
|
+=item mkdir
|
|
+
|
|
+This is identical to Perl's builtin C<mkdir()> function
|
|
+for creating directories, see L<perlfunc/mkdir>.
|
|
+
|
|
+=item mkfifo
|
|
+
|
|
+This is similar to the C function C<mkfifo()> for creating
|
|
+FIFO special files.
|
|
+
|
|
+ if (mkfifo($path, $mode)) { ....
|
|
+
|
|
+Returns C<undef> on failure. The C<$mode> is similar to the
|
|
+mode of C<mkdir()>, see L<perlfunc/mkdir>, though for C<mkfifo>
|
|
+you B<must> specify the C<$mode>.
|
|
+
|
|
+=item mktime
|
|
+
|
|
+Convert date/time info to a calendar time.
|
|
+
|
|
+Synopsis:
|
|
+
|
|
+ mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = -1)
|
|
+
|
|
+The month (C<mon>), weekday (C<wday>), and yearday (C<yday>) begin at zero.
|
|
+I.e. January is 0, not 1; Sunday is 0, not 1; January 1st is 0, not 1. The
|
|
+year (C<year>) is given in years since 1900. I.e. The year 1995 is 95; the
|
|
+year 2001 is 101. Consult your system's C<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 C<undef> on failure.
|
|
+
|
|
+=item modf
|
|
+
|
|
+Return the integral and fractional parts of a floating-point number.
|
|
+
|
|
+ ($fractional, $integral) = POSIX::modf( 3.14 );
|
|
+
|
|
+=item nice
|
|
+
|
|
+This is similar to the C function C<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.
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item offsetof
|
|
+
|
|
+offsetof() is C-specific, you probably want to see L<perlfunc/pack> instead.
|
|
+
|
|
+=item open
|
|
+
|
|
+Open a file for reading for writing. This returns file descriptors, not
|
|
+Perl filehandles. Use C<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 C<undef> on failure.
|
|
+
|
|
+See also L<perlfunc/sysopen>.
|
|
+
|
|
+=item opendir
|
|
+
|
|
+Open a directory for reading.
|
|
+
|
|
+ $dir = POSIX::opendir( "/var" );
|
|
+ @files = POSIX::readdir( $dir );
|
|
+ POSIX::closedir( $dir );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item pathconf
|
|
+
|
|
+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 C</var>.
|
|
+
|
|
+ $path_max = POSIX::pathconf( "/var", &POSIX::_PC_PATH_MAX );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item pause
|
|
+
|
|
+This is similar to the C function C<pause()>, which suspends
|
|
+the execution of the current process until a signal is received.
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item perror
|
|
+
|
|
+This is identical to the C function C<perror()>, which outputs to the
|
|
+standard error stream the specified message followed by ": " and the
|
|
+current error string. Use the C<warn()> function and the C<$!>
|
|
+variable instead, see L<perlfunc/warn> and L<perlvar/$ERRNO>.
|
|
+
|
|
+=item pipe
|
|
+
|
|
+Create an interprocess channel. This returns file descriptors like those
|
|
+returned by C<POSIX::open>.
|
|
+
|
|
+ my ($read, $write) = POSIX::pipe();
|
|
+ POSIX::write( $write, "hello", 5 );
|
|
+ POSIX::read( $read, $buf, 5 );
|
|
+
|
|
+See also L<perlfunc/pipe>.
|
|
+
|
|
+=item pow
|
|
+
|
|
+Computes C<$x> raised to the power C<$exponent>.
|
|
+
|
|
+ $ret = POSIX::pow( $x, $exponent );
|
|
+
|
|
+You can also use the C<**> operator, see L<perlop>.
|
|
+
|
|
+=item printf
|
|
+
|
|
+Formats and prints the specified arguments to STDOUT.
|
|
+See also L<perlfunc/printf>.
|
|
+
|
|
+=item putc
|
|
+
|
|
+putc() is C-specific, see L<perlfunc/print> instead.
|
|
+
|
|
+=item putchar
|
|
+
|
|
+putchar() is C-specific, see L<perlfunc/print> instead.
|
|
+
|
|
+=item puts
|
|
+
|
|
+puts() is C-specific, see L<perlfunc/print> instead.
|
|
+
|
|
+=item qsort
|
|
+
|
|
+qsort() is C-specific, see L<perlfunc/sort> instead.
|
|
+
|
|
+=item raise
|
|
+
|
|
+Sends the specified signal to the current process.
|
|
+See also L<perlfunc/kill> and the C<$$> in L<perlvar/$PID>.
|
|
+
|
|
+=item rand
|
|
+
|
|
+C<rand()> is non-portable, see L<perlfunc/rand> instead.
|
|
+
|
|
+=item read
|
|
+
|
|
+Read from a file. This uses file descriptors such as those obtained by
|
|
+calling C<POSIX::open>. If the buffer C<$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 C<undef> on failure.
|
|
+
|
|
+See also L<perlfunc/sysread>.
|
|
+
|
|
+=item readdir
|
|
+
|
|
+This is identical to Perl's builtin C<readdir()> function
|
|
+for reading directory entries, see L<perlfunc/readdir>.
|
|
+
|
|
+=item realloc
|
|
+
|
|
+realloc() is C-specific. Perl does memory management transparently.
|
|
+
|
|
+=item remove
|
|
+
|
|
+This is identical to Perl's builtin C<unlink()> function
|
|
+for removing files, see L<perlfunc/unlink>.
|
|
+
|
|
+=item rename
|
|
+
|
|
+This is identical to Perl's builtin C<rename()> function
|
|
+for renaming files, see L<perlfunc/rename>.
|
|
+
|
|
+=item rewind
|
|
+
|
|
+Seeks to the beginning of the file.
|
|
+
|
|
+=item rewinddir
|
|
+
|
|
+This is identical to Perl's builtin C<rewinddir()> function for
|
|
+rewinding directory entry streams, see L<perlfunc/rewinddir>.
|
|
+
|
|
+=item rmdir
|
|
+
|
|
+This is identical to Perl's builtin C<rmdir()> function
|
|
+for removing (empty) directories, see L<perlfunc/rmdir>.
|
|
+
|
|
+=item scanf
|
|
+
|
|
+scanf() is C-specific, use E<lt>E<gt> and regular expressions instead,
|
|
+see L<perlre>.
|
|
+
|
|
+=item setgid
|
|
+
|
|
+Sets the real group identifier and the effective group identifier for
|
|
+this process. Similar to assigning a value to the Perl's builtin
|
|
+C<$)> variable, see L<perlvar/$EGID>, 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.
|
|
+
|
|
+=item setjmp
|
|
+
|
|
+C<setjmp()> is C-specific: use C<eval {}> instead,
|
|
+see L<perlfunc/eval>.
|
|
+
|
|
+=item setlocale
|
|
+
|
|
+Modifies and queries program's locale. The following examples assume
|
|
+
|
|
+ use POSIX qw(setlocale LC_ALL LC_CTYPE);
|
|
+
|
|
+has been issued.
|
|
+
|
|
+The following will set the traditional UNIX system locale behavior
|
|
+(the second argument C<"C">).
|
|
+
|
|
+ $loc = setlocale( LC_ALL, "C" );
|
|
+
|
|
+The following will query the current LC_CTYPE category. (No second
|
|
+argument means 'query'.)
|
|
+
|
|
+ $loc = setlocale( LC_CTYPE );
|
|
+
|
|
+The following will set the LC_CTYPE behaviour according to the locale
|
|
+environment variables (the second argument C<"">).
|
|
+Please see your systems C<setlocale(3)> documentation for the locale
|
|
+environment variables' meaning or consult L<perllocale>.
|
|
+
|
|
+ $loc = setlocale( LC_CTYPE, "" );
|
|
+
|
|
+The following will set the LC_COLLATE behaviour to Argentinian
|
|
+Spanish. B<NOTE>: The naming and availability of locales depends on
|
|
+your operating system. Please consult L<perllocale> for how to find
|
|
+out which locales are available in your system.
|
|
+
|
|
+ $loc = setlocale( LC_COLLATE, "es_AR.ISO8859-1" );
|
|
+
|
|
+=item setpgid
|
|
+
|
|
+This is similar to the C function C<setpgid()> for
|
|
+setting the process group identifier of the current process.
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item setsid
|
|
+
|
|
+This is identical to the C function C<setsid()> for
|
|
+setting the session identifier of the current process.
|
|
+
|
|
+=item setuid
|
|
+
|
|
+Sets the real user identifier and the effective user identifier for
|
|
+this process. Similar to assigning a value to the Perl's builtin
|
|
+C<$E<lt>> variable, see L<perlvar/$UID>, except that the latter
|
|
+will change only the real user identifier.
|
|
+
|
|
+=item sigaction
|
|
+
|
|
+Detailed signal management. This uses C<POSIX::SigAction> objects for
|
|
+the C<action> and C<oldaction> arguments (the oldaction can also be
|
|
+just a hash reference). Consult your system's C<sigaction> manpage
|
|
+for details, see also C<POSIX::SigRt>.
|
|
+
|
|
+Synopsis:
|
|
+
|
|
+ sigaction(signal, action, oldaction = 0)
|
|
+
|
|
+Returns C<undef> on failure. The C<signal> must be a number (like
|
|
+SIGHUP), not a string (like "SIGHUP"), though Perl does try hard
|
|
+to understand you.
|
|
+
|
|
+If you use the SA_SIGINFO flag, the signal handler will in addition to
|
|
+the first argument, the signal name, also receive a second argument, a
|
|
+hash reference, inside which are the following keys with the following
|
|
+semantics, as defined by POSIX/SUSv3:
|
|
+
|
|
+ signo the signal number
|
|
+ errno the error number
|
|
+ code if this is zero or less, the signal was sent by
|
|
+ a user process and the uid and pid make sense,
|
|
+ otherwise the signal was sent by the kernel
|
|
+
|
|
+The following are also defined by POSIX/SUSv3, but unfortunately
|
|
+not very widely implemented:
|
|
+
|
|
+ pid the process id generating the signal
|
|
+ uid the uid of the process id generating the signal
|
|
+ status exit value or signal for SIGCHLD
|
|
+ band band event for SIGPOLL
|
|
+
|
|
+A third argument is also passed to the handler, which contains a copy
|
|
+of the raw binary contents of the siginfo structure: if a system has
|
|
+some non-POSIX fields, this third argument is where to unpack() them
|
|
+from.
|
|
+
|
|
+Note that not all siginfo values make sense simultaneously (some are
|
|
+valid only for certain signals, for example), and not all values make
|
|
+sense from Perl perspective, you should to consult your system's
|
|
+C<sigaction> and possibly also C<siginfo> documentation.
|
|
+
|
|
+=item siglongjmp
|
|
+
|
|
+siglongjmp() is C-specific: use L<perlfunc/die> instead.
|
|
+
|
|
+=item sigpending
|
|
+
|
|
+Examine signals that are blocked and pending. This uses C<POSIX::SigSet>
|
|
+objects for the C<sigset> argument. Consult your system's C<sigpending>
|
|
+manpage for details.
|
|
+
|
|
+Synopsis:
|
|
+
|
|
+ sigpending(sigset)
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item sigprocmask
|
|
+
|
|
+Change and/or examine calling process's signal mask. This uses
|
|
+C<POSIX::SigSet> objects for the C<sigset> and C<oldsigset> arguments.
|
|
+Consult your system's C<sigprocmask> manpage for details.
|
|
+
|
|
+Synopsis:
|
|
+
|
|
+ sigprocmask(how, sigset, oldsigset = 0)
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item sigsetjmp
|
|
+
|
|
+C<sigsetjmp()> is C-specific: use C<eval {}> instead,
|
|
+see L<perlfunc/eval>.
|
|
+
|
|
+=item sigsuspend
|
|
+
|
|
+Install a signal mask and suspend process until signal arrives. This uses
|
|
+C<POSIX::SigSet> objects for the C<signal_mask> argument. Consult your
|
|
+system's C<sigsuspend> manpage for details.
|
|
+
|
|
+Synopsis:
|
|
+
|
|
+ sigsuspend(signal_mask)
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item sin
|
|
+
|
|
+This is identical to Perl's builtin C<sin()> function
|
|
+for returning the sine of the numerical argument,
|
|
+see L<perlfunc/sin>. See also L<Math::Trig>.
|
|
+
|
|
+=item sinh
|
|
+
|
|
+This is identical to the C function C<sinh()>
|
|
+for returning the hyperbolic sine of the numerical argument.
|
|
+See also L<Math::Trig>.
|
|
+
|
|
+=item sleep
|
|
+
|
|
+This is functionally identical to Perl's builtin C<sleep()> function
|
|
+for suspending the execution of the current for process for certain
|
|
+number of seconds, see L<perlfunc/sleep>. There is one significant
|
|
+difference, however: C<POSIX::sleep()> returns the number of
|
|
+B<unslept> seconds, while the C<CORE::sleep()> returns the
|
|
+number of slept seconds.
|
|
+
|
|
+=item sprintf
|
|
+
|
|
+This is similar to Perl's builtin C<sprintf()> function
|
|
+for returning a string that has the arguments formatted as requested,
|
|
+see L<perlfunc/sprintf>.
|
|
+
|
|
+=item sqrt
|
|
+
|
|
+This is identical to Perl's builtin C<sqrt()> function.
|
|
+for returning the square root of the numerical argument,
|
|
+see L<perlfunc/sqrt>.
|
|
+
|
|
+=item srand
|
|
+
|
|
+Give a seed the pseudorandom number generator, see L<perlfunc/srand>.
|
|
+
|
|
+=item sscanf
|
|
+
|
|
+sscanf() is C-specific, use regular expressions instead,
|
|
+see L<perlre>.
|
|
+
|
|
+=item stat
|
|
+
|
|
+This is identical to Perl's builtin C<stat()> function
|
|
+for returning information about files and directories.
|
|
+
|
|
+=item strcat
|
|
+
|
|
+strcat() is C-specific, use C<.=> instead, see L<perlop>.
|
|
+
|
|
+=item strchr
|
|
+
|
|
+strchr() is C-specific, see L<perlfunc/index> instead.
|
|
+
|
|
+=item strcmp
|
|
+
|
|
+strcmp() is C-specific, use C<eq> or C<cmp> instead, see L<perlop>.
|
|
+
|
|
+=item strcoll
|
|
+
|
|
+This is identical to the C function C<strcoll()>
|
|
+for collating (comparing) strings transformed using
|
|
+the C<strxfrm()> function. Not really needed since
|
|
+Perl can do this transparently, see L<perllocale>.
|
|
+
|
|
+=item strcpy
|
|
+
|
|
+strcpy() is C-specific, use C<=> instead, see L<perlop>.
|
|
+
|
|
+=item strcspn
|
|
+
|
|
+strcspn() is C-specific, use regular expressions instead,
|
|
+see L<perlre>.
|
|
+
|
|
+=item strerror
|
|
+
|
|
+Returns the error string for the specified errno.
|
|
+Identical to the string form of the C<$!>, see L<perlvar/$ERRNO>.
|
|
+
|
|
+=item strftime
|
|
+
|
|
+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 (C<mon>), weekday (C<wday>), and yearday (C<yday>) begin at zero.
|
|
+I.e. January is 0, not 1; Sunday is 0, not 1; January 1st is 0, not 1. The
|
|
+year (C<year>) is given in years since 1900. I.e., the year 1995 is 95; the
|
|
+year 2001 is 101. Consult your system's C<strftime()> manpage for details
|
|
+about these and the other arguments.
|
|
+
|
|
+If you want your code to be portable, your format (C<fmt>) argument
|
|
+should use only the conversion specifiers defined by the ANSI C
|
|
+standard (C89, to play safe). These are C<aAbBcdHIjmMpSUwWxXyYZ%>.
|
|
+But even then, the B<results> of some of the conversion specifiers are
|
|
+non-portable. For example, the specifiers C<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<c> changes according to the timezone settings of the
|
|
+user and the timezone computation rules of the operating system.
|
|
+The C<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
|
|
+C<mktime()> before calling your system's C<strftime()> function,
|
|
+except that the C<isdst> value is not affected.
|
|
+
|
|
+The string for Tuesday, December 12, 1995.
|
|
+
|
|
+ $str = POSIX::strftime( "%A, %B %d, %Y", 0, 0, 0, 12, 11, 95, 2 );
|
|
+ print "$str\n";
|
|
+
|
|
+=item strlen
|
|
+
|
|
+strlen() is C-specific, use C<length()> instead, see L<perlfunc/length>.
|
|
+
|
|
+=item strncat
|
|
+
|
|
+strncat() is C-specific, use C<.=> instead, see L<perlop>.
|
|
+
|
|
+=item strncmp
|
|
+
|
|
+strncmp() is C-specific, use C<eq> instead, see L<perlop>.
|
|
+
|
|
+=item strncpy
|
|
+
|
|
+strncpy() is C-specific, use C<=> instead, see L<perlop>.
|
|
+
|
|
+=item strpbrk
|
|
+
|
|
+strpbrk() is C-specific, use regular expressions instead,
|
|
+see L<perlre>.
|
|
+
|
|
+=item strrchr
|
|
+
|
|
+strrchr() is C-specific, see L<perlfunc/rindex> instead.
|
|
+
|
|
+=item strspn
|
|
+
|
|
+strspn() is C-specific, use regular expressions instead,
|
|
+see L<perlre>.
|
|
+
|
|
+=item strstr
|
|
+
|
|
+This is identical to Perl's builtin C<index()> function,
|
|
+see L<perlfunc/index>.
|
|
+
|
|
+=item strtod
|
|
+
|
|
+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 I<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.
|
|
+
|
|
+=item strtok
|
|
+
|
|
+strtok() is C-specific, use regular expressions instead, see
|
|
+L<perlre>, or L<perlfunc/split>.
|
|
+
|
|
+=item strtol
|
|
+
|
|
+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 I<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.
|
|
+
|
|
+=item strtoul
|
|
+
|
|
+String to unsigned (long) integer translation. strtoul() is identical
|
|
+to strtol() except that strtoul() only parses unsigned integers. See
|
|
+L</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.
|
|
+
|
|
+=item strxfrm
|
|
+
|
|
+String transformation. Returns the transformed string.
|
|
+
|
|
+ $dst = POSIX::strxfrm( $src );
|
|
+
|
|
+Used in conjunction with the C<strcoll()> function, see L</strcoll>.
|
|
+
|
|
+Not really needed since Perl can do this transparently, see
|
|
+L<perllocale>.
|
|
+
|
|
+=item sysconf
|
|
+
|
|
+Retrieves values of system configurable variables.
|
|
+
|
|
+The following will get the machine's clock speed.
|
|
+
|
|
+ $clock_ticks = POSIX::sysconf( &POSIX::_SC_CLK_TCK );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item system
|
|
+
|
|
+This is identical to Perl's builtin C<system()> function, see
|
|
+L<perlfunc/system>.
|
|
+
|
|
+=item tan
|
|
+
|
|
+This is identical to the C function C<tan()>, returning the
|
|
+tangent of the numerical argument. See also L<Math::Trig>.
|
|
+
|
|
+=item tanh
|
|
+
|
|
+This is identical to the C function C<tanh()>, returning the
|
|
+hyperbolic tangent of the numerical argument. See also L<Math::Trig>.
|
|
+
|
|
+=item tcdrain
|
|
+
|
|
+This is similar to the C function C<tcdrain()> for draining
|
|
+the output queue of its argument stream.
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item tcflow
|
|
+
|
|
+This is similar to the C function C<tcflow()> for controlling
|
|
+the flow of its argument stream.
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item tcflush
|
|
+
|
|
+This is similar to the C function C<tcflush()> for flushing
|
|
+the I/O buffers of its argument stream.
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item tcgetpgrp
|
|
+
|
|
+This is identical to the C function C<tcgetpgrp()> for returning the
|
|
+process group identifier of the foreground process group of the controlling
|
|
+terminal.
|
|
+
|
|
+=item tcsendbreak
|
|
+
|
|
+This is similar to the C function C<tcsendbreak()> for sending
|
|
+a break on its argument stream.
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item tcsetpgrp
|
|
+
|
|
+This is similar to the C function C<tcsetpgrp()> for setting the
|
|
+process group identifier of the foreground process group of the controlling
|
|
+terminal.
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item time
|
|
+
|
|
+This is identical to Perl's builtin C<time()> function
|
|
+for returning the number of seconds since the epoch
|
|
+(whatever it is for the system), see L<perlfunc/time>.
|
|
+
|
|
+=item times
|
|
+
|
|
+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 C<times()> function returns four values, measured in
|
|
+seconds.
|
|
+
|
|
+=item tmpfile
|
|
+
|
|
+Use method C<IO::File::new_tmpfile()> instead, or see L<File::Temp>.
|
|
+
|
|
+=item tmpnam
|
|
+
|
|
+Returns a name for a temporary file.
|
|
+
|
|
+ $tmpfile = POSIX::tmpnam();
|
|
+
|
|
+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 L<File::Temp>.
|
|
+
|
|
+=item tolower
|
|
+
|
|
+This is identical to the C function, except that it can apply to a single
|
|
+character or to a whole string. Consider using the C<lc()> function,
|
|
+see L<perlfunc/lc>, or the equivalent C<\L> operator inside doublequotish
|
|
+strings.
|
|
+
|
|
+=item toupper
|
|
+
|
|
+This is identical to the C function, except that it can apply to a single
|
|
+character or to a whole string. Consider using the C<uc()> function,
|
|
+see L<perlfunc/uc>, or the equivalent C<\U> operator inside doublequotish
|
|
+strings.
|
|
+
|
|
+=item ttyname
|
|
+
|
|
+This is identical to the C function C<ttyname()> for returning the
|
|
+name of the current terminal.
|
|
+
|
|
+=item tzname
|
|
+
|
|
+Retrieves the time conversion information from the C<tzname> variable.
|
|
+
|
|
+ POSIX::tzset();
|
|
+ ($std, $dst) = POSIX::tzname();
|
|
+
|
|
+=item tzset
|
|
+
|
|
+This is identical to the C function C<tzset()> for setting
|
|
+the current timezone based on the environment variable C<TZ>,
|
|
+to be used by C<ctime()>, C<localtime()>, C<mktime()>, and C<strftime()>
|
|
+functions.
|
|
+
|
|
+=item umask
|
|
+
|
|
+This is identical to Perl's builtin C<umask()> function
|
|
+for setting (and querying) the file creation permission mask,
|
|
+see L<perlfunc/umask>.
|
|
+
|
|
+=item uname
|
|
+
|
|
+Get name of current operating system.
|
|
+
|
|
+ ($sysname, $nodename, $release, $version, $machine) = POSIX::uname();
|
|
+
|
|
+Note that the actual meanings of the various fields are not
|
|
+that well standardized, do not expect any great portability.
|
|
+The C<$sysname> might be the name of the operating system,
|
|
+the C<$nodename> might be the name of the host, the C<$release>
|
|
+might be the (major) release number of the operating system,
|
|
+the C<$version> might be the (minor) release number of the
|
|
+operating system, and the C<$machine> might be a hardware identifier.
|
|
+Maybe.
|
|
+
|
|
+=item ungetc
|
|
+
|
|
+Use method C<IO::Handle::ungetc()> instead.
|
|
+
|
|
+=item unlink
|
|
+
|
|
+This is identical to Perl's builtin C<unlink()> function
|
|
+for removing files, see L<perlfunc/unlink>.
|
|
+
|
|
+=item utime
|
|
+
|
|
+This is identical to Perl's builtin C<utime()> function
|
|
+for changing the time stamps of files and directories,
|
|
+see L<perlfunc/utime>.
|
|
+
|
|
+=item vfprintf
|
|
+
|
|
+vfprintf() is C-specific, see L<perlfunc/printf> instead.
|
|
+
|
|
+=item vprintf
|
|
+
|
|
+vprintf() is C-specific, see L<perlfunc/printf> instead.
|
|
+
|
|
+=item vsprintf
|
|
+
|
|
+vsprintf() is C-specific, see L<perlfunc/sprintf> instead.
|
|
+
|
|
+=item wait
|
|
+
|
|
+This is identical to Perl's builtin C<wait()> function,
|
|
+see L<perlfunc/wait>.
|
|
+
|
|
+=item waitpid
|
|
+
|
|
+Wait for a child process to change state. This is identical to Perl's
|
|
+builtin C<waitpid()> function, see L<perlfunc/waitpid>.
|
|
+
|
|
+ $pid = POSIX::waitpid( -1, POSIX::WNOHANG );
|
|
+ print "status = ", ($? / 256), "\n";
|
|
+
|
|
+=item wcstombs
|
|
+
|
|
+This is identical to the C function C<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.
|
|
+
|
|
+=item wctomb
|
|
+
|
|
+This is identical to the C function C<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.
|
|
+
|
|
+=item write
|
|
+
|
|
+Write to a file. This uses file descriptors such as those obtained by
|
|
+calling C<POSIX::open>.
|
|
+
|
|
+ $fd = POSIX::open( "foo", &POSIX::O_WRONLY );
|
|
+ $buf = "hello";
|
|
+ $bytes = POSIX::write( $fd, $buf, 5 );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+See also L<perlfunc/syswrite>.
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 CLASSES
|
|
+
|
|
+=head2 POSIX::SigAction
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item new
|
|
+
|
|
+Creates a new C<POSIX::SigAction> object which corresponds to the C
|
|
+C<struct sigaction>. This object will be destroyed automatically when
|
|
+it is no longer needed. The first parameter is the handler, a sub
|
|
+reference. The second parameter is a C<POSIX::SigSet> object, it
|
|
+defaults to the empty set. The third parameter contains the
|
|
+C<sa_flags>, it defaults to 0.
|
|
+
|
|
+ $sigset = POSIX::SigSet->new(SIGINT, SIGQUIT);
|
|
+ $sigaction = POSIX::SigAction->new( \&handler, $sigset, &POSIX::SA_NOCLDSTOP );
|
|
+
|
|
+This C<POSIX::SigAction> object is intended for use with the C<POSIX::sigaction()>
|
|
+function.
|
|
+
|
|
+=back
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item handler
|
|
+
|
|
+=item mask
|
|
+
|
|
+=item flags
|
|
+
|
|
+accessor functions to get/set the values of a SigAction object.
|
|
+
|
|
+ $sigset = $sigaction->mask;
|
|
+ $sigaction->flags(&POSIX::SA_RESTART);
|
|
+
|
|
+=item safe
|
|
+
|
|
+accessor function for the "safe signals" flag of a SigAction object; see
|
|
+L<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 C<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 C<POSIX::sigaction()>:
|
|
+
|
|
+ sigaction(SIGINT, $new_action, $old_action);
|
|
+ if ($old_action->safe) {
|
|
+ # previous SIGINT handler used safe signals
|
|
+ }
|
|
+
|
|
+=back
|
|
+
|
|
+=head2 POSIX::SigRt
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item %SIGRT
|
|
+
|
|
+A hash of the POSIX realtime signal handlers. It is an extension of
|
|
+the standard %SIG, the $POSIX::SIGRT{SIGRTMIN} is roughly equivalent
|
|
+to $SIG{SIGRTMIN}, but the right POSIX moves (see below) are made with
|
|
+the POSIX::SigSet and POSIX::sigaction instead of accessing the %SIG.
|
|
+
|
|
+You can set the %POSIX::SIGRT elements to set the POSIX realtime
|
|
+signal handlers, use C<delete> and C<exists> on the elements, and use
|
|
+C<scalar> on the C<%POSIX::SIGRT> to find out how many POSIX realtime
|
|
+signals there are available (SIGRTMAX - SIGRTMIN + 1, the SIGRTMAX is
|
|
+a valid POSIX realtime signal).
|
|
+
|
|
+Setting the %SIGRT elements is equivalent to calling this:
|
|
+
|
|
+ sub new {
|
|
+ my ($rtsig, $handler, $flags) = @_;
|
|
+ my $sigset = POSIX::SigSet($rtsig);
|
|
+ my $sigact = POSIX::SigAction->new($handler, $sigset, $flags);
|
|
+ sigaction($rtsig, $sigact);
|
|
+ }
|
|
+
|
|
+The flags default to zero, if you want something different you can
|
|
+either use C<local> on $POSIX::SigRt::SIGACTION_FLAGS, or you can
|
|
+derive from POSIX::SigRt and define your own C<new()> (the tied hash
|
|
+STORE method of the %SIGRT calls C<new($rtsig, $handler, $SIGACTION_FLAGS)>,
|
|
+where the $rtsig ranges from zero to SIGRTMAX - SIGRTMIN + 1).
|
|
+
|
|
+Just as with any signal, you can use sigaction($rtsig, undef, $oa) to
|
|
+retrieve the installed signal handler (or, rather, the signal action).
|
|
+
|
|
+B<NOTE:> whether POSIX realtime signals really work in your system, or
|
|
+whether Perl has been compiled so that it works with them, is outside
|
|
+of this discussion.
|
|
+
|
|
+=item SIGRTMIN
|
|
+
|
|
+Return the minimum POSIX realtime signal number available, or C<undef>
|
|
+if no POSIX realtime signals are available.
|
|
+
|
|
+=item SIGRTMAX
|
|
+
|
|
+Return the maximum POSIX realtime signal number available, or C<undef>
|
|
+if no POSIX realtime signals are available.
|
|
+
|
|
+=back
|
|
+
|
|
+=head2 POSIX::SigSet
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item new
|
|
+
|
|
+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 );
|
|
+
|
|
+=item addset
|
|
+
|
|
+Add a signal to a SigSet object.
|
|
+
|
|
+ $sigset->addset( &POSIX::SIGUSR2 );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item delset
|
|
+
|
|
+Remove a signal from the SigSet object.
|
|
+
|
|
+ $sigset->delset( &POSIX::SIGUSR2 );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item emptyset
|
|
+
|
|
+Initialize the SigSet object to be empty.
|
|
+
|
|
+ $sigset->emptyset();
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item fillset
|
|
+
|
|
+Initialize the SigSet object to include all signals.
|
|
+
|
|
+ $sigset->fillset();
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item ismember
|
|
+
|
|
+Tests the SigSet object to see if it contains a specific signal.
|
|
+
|
|
+ if( $sigset->ismember( &POSIX::SIGUSR1 ) ){
|
|
+ print "contains SIGUSR1\n";
|
|
+ }
|
|
+
|
|
+=back
|
|
+
|
|
+=head2 POSIX::Termios
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item 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. 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;
|
|
+
|
|
+=item getattr
|
|
+
|
|
+Get terminal control attributes.
|
|
+
|
|
+Obtain the attributes for stdin.
|
|
+
|
|
+ $termios->getattr( 0 ) # Recommended for clarity.
|
|
+ $termios->getattr()
|
|
+
|
|
+Obtain the attributes for stdout.
|
|
+
|
|
+ $termios->getattr( 1 )
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item getcc
|
|
+
|
|
+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);
|
|
+
|
|
+=item getcflag
|
|
+
|
|
+Retrieve the c_cflag field of a termios object.
|
|
+
|
|
+ $c_cflag = $termios->getcflag;
|
|
+
|
|
+=item getiflag
|
|
+
|
|
+Retrieve the c_iflag field of a termios object.
|
|
+
|
|
+ $c_iflag = $termios->getiflag;
|
|
+
|
|
+=item getispeed
|
|
+
|
|
+Retrieve the input baud rate.
|
|
+
|
|
+ $ispeed = $termios->getispeed;
|
|
+
|
|
+=item getlflag
|
|
+
|
|
+Retrieve the c_lflag field of a termios object.
|
|
+
|
|
+ $c_lflag = $termios->getlflag;
|
|
+
|
|
+=item getoflag
|
|
+
|
|
+Retrieve the c_oflag field of a termios object.
|
|
+
|
|
+ $c_oflag = $termios->getoflag;
|
|
+
|
|
+=item getospeed
|
|
+
|
|
+Retrieve the output baud rate.
|
|
+
|
|
+ $ospeed = $termios->getospeed;
|
|
+
|
|
+=item setattr
|
|
+
|
|
+Set terminal control attributes.
|
|
+
|
|
+Set attributes immediately for stdout.
|
|
+
|
|
+ $termios->setattr( 1, &POSIX::TCSANOW );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item setcc
|
|
+
|
|
+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 );
|
|
+
|
|
+=item setcflag
|
|
+
|
|
+Set the c_cflag field of a termios object.
|
|
+
|
|
+ $termios->setcflag( $c_cflag | &POSIX::CLOCAL );
|
|
+
|
|
+=item setiflag
|
|
+
|
|
+Set the c_iflag field of a termios object.
|
|
+
|
|
+ $termios->setiflag( $c_iflag | &POSIX::BRKINT );
|
|
+
|
|
+=item setispeed
|
|
+
|
|
+Set the input baud rate.
|
|
+
|
|
+ $termios->setispeed( &POSIX::B9600 );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item setlflag
|
|
+
|
|
+Set the c_lflag field of a termios object.
|
|
+
|
|
+ $termios->setlflag( $c_lflag | &POSIX::ECHO );
|
|
+
|
|
+=item setoflag
|
|
+
|
|
+Set the c_oflag field of a termios object.
|
|
+
|
|
+ $termios->setoflag( $c_oflag | &POSIX::OPOST );
|
|
+
|
|
+=item setospeed
|
|
+
|
|
+Set the output baud rate.
|
|
+
|
|
+ $termios->setospeed( &POSIX::B9600 );
|
|
+
|
|
+Returns C<undef> on failure.
|
|
+
|
|
+=item Baud rate values
|
|
+
|
|
+B38400 B75 B200 B134 B300 B1800 B150 B0 B19200 B1200 B9600 B600 B4800 B50 B2400 B110
|
|
+
|
|
+=item Terminal interface values
|
|
+
|
|
+TCSADRAIN TCSANOW TCOON TCIOFLUSH TCOFLUSH TCION TCIFLUSH TCSAFLUSH TCIOFF TCOOFF
|
|
+
|
|
+=item c_cc field values
|
|
+
|
|
+VEOF VEOL VERASE VINTR VKILL VQUIT VSUSP VSTART VSTOP VMIN VTIME NCCS
|
|
+
|
|
+=item c_cflag field values
|
|
+
|
|
+CLOCAL CREAD CSIZE CS5 CS6 CS7 CS8 CSTOPB HUPCL PARENB PARODD
|
|
+
|
|
+=item c_iflag field values
|
|
+
|
|
+BRKINT ICRNL IGNBRK IGNCR IGNPAR INLCR INPCK ISTRIP IXOFF IXON PARMRK
|
|
+
|
|
+=item c_lflag field values
|
|
+
|
|
+ECHO ECHOE ECHOK ECHONL ICANON IEXTEN ISIG NOFLSH TOSTOP
|
|
+
|
|
+=item c_oflag field values
|
|
+
|
|
+OPOST
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 PATHNAME CONSTANTS
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+_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
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 POSIX CONSTANTS
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+_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
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 SYSTEM CONFIGURATION
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+_SC_ARG_MAX _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 ERRNO
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+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
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 FCNTL
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+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
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 FLOAT
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+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
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 LIMITS
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+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
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 LOCALE
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 MATH
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+HUGE_VAL
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 SIGNAL
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+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
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 STAT
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+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
|
|
+
|
|
+=item Macros
|
|
+
|
|
+S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 STDLIB
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX RAND_MAX
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 STDIO
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid L_tmpname TMP_MAX
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 TIME
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+CLK_TCK CLOCKS_PER_SEC
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 UNISTD
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+R_OK SEEK_CUR SEEK_END SEEK_SET STDIN_FILENO STDOUT_FILENO STDERR_FILENO W_OK X_OK
|
|
+
|
|
+=back
|
|
+
|
|
+=head1 WAIT
|
|
+
|
|
+=over 8
|
|
+
|
|
+=item Constants
|
|
+
|
|
+WNOHANG WUNTRACED
|
|
+
|
|
+=over 16
|
|
+
|
|
+=item WNOHANG
|
|
+
|
|
+Do not suspend the calling process until a child process
|
|
+changes state but instead return immediately.
|
|
+
|
|
+=item WUNTRACED
|
|
+
|
|
+Catch stopped child processes.
|
|
+
|
|
+=back
|
|
+
|
|
+=item Macros
|
|
+
|
|
+WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG WIFSTOPPED WSTOPSIG
|
|
+
|
|
+=over 16
|
|
+
|
|
+=item WIFEXITED
|
|
+
|
|
+WIFEXITED($?) returns true if the child process exited normally
|
|
+(C<exit()> or by falling off the end of C<main()>)
|
|
+
|
|
+=item WEXITSTATUS
|
|
+
|
|
+WEXITSTATUS($?) returns the normal exit status of the child process
|
|
+(only meaningful if WIFEXITED($?) is true)
|
|
+
|
|
+=item WIFSIGNALED
|
|
+
|
|
+WIFSIGNALED($?) returns true if the child process terminated because
|
|
+of a signal
|
|
+
|
|
+=item WTERMSIG
|
|
+
|
|
+WTERMSIG($?) returns the signal the child process terminated for
|
|
+(only meaningful if WIFSIGNALED($?) is true)
|
|
+
|
|
+=item WIFSTOPPED
|
|
+
|
|
+WIFSTOPPED($?) returns true if the child process is currently stopped
|
|
+(can happen only if you specified the WUNTRACED flag to waitpid())
|
|
+
|
|
+=item WSTOPSIG
|
|
+
|
|
+WSTOPSIG($?) returns the signal the child process was stopped for
|
|
+(only meaningful if WIFSTOPPED($?) is true)
|
|
+
|
|
+=back
|
|
+
|
|
+=back
|
|
+
|