NAME
POSIX::1003::Fcntl - POSIX function fcntl
INHERITANCE
POSIX::1003::Fcntl
is a POSIX::1003::Module
SYNOPSIS
use POSIX::1003::Fcntl;
DESCRIPTION
One function, which hides many tricks with file-descriptors. This module tries to provide functions which separates the various uses.
See documentation in base class.
METHODS
See documentation in base class.
FUNCTIONS
Standard POSIX
- fcntl(FD, FUNCTION, SCALAR)
-
See
perlfunc fcntl
. This raw call tofcntl()
is only in some cases simple, but often isn't.
Additional
- fcntl_dup(FD|FH, OPTIONS)
-
Functions F_DUPFD and F_DUPFD_CLOEXEC: dupplicate a file-descriptor to the lowest free fd number.
-Option --Default close_on_exec <false>
example:
my $dup_fd = fcntl_dup \*STDOUT; my $dup_fd = fcntl_dup 2, close_on_exec => 1;
- getfd_control(FD|FH)
-
Control the file descriptor flags, function F_GETFD.
- getfd_flags(FD|FH)
-
Get the file status flags and access modes, function F_GETFL.
example:
my $flags = getfd_flags(fd); if ((flags & O_ACCMODE) == O_RDWR)
- getfd_islocked(FD|FH, OPTIONS)
-
Function F_GETLCK. Returns the first lock which would prevent getting the lock. The OPTIONS are the same as for setfd_lock().
example:
if(my $lock = getfd_islocked \*IN) ...
- getfd_lease(FD|FH)
-
Function F_GETLEASE.
example:
my $lease = getfd_lease(\*STDIN) or die $!; if($lease != F_RDLCK) ...
- getfd_owner(FD|FH, OPTIONS)
-
Function F_GETOWN or F_GETOWN_EX.
example:
my ($type, $pid) = getfd_owner($fd); defined $type or die $!; if($type==F_OWNER_PGRP) ... my $pid = getfd_owner($fd) or die $!;
- getfd_pipe_size(FD|FH)
-
Function F_GETPIPE_SZ.
example:
my $size = getfd_pipe_size($pipe) or die $!;
- getfd_signal(FD|FH)
-
Function F_GETSIG.
example:
my $signal = getfd_signal(\*STDOUT) or die $!;
- setfd_control(FD|FH, FLAGS)
-
Change the file descriptor flags, function F_SETFD.
- setfd_flags(FD|FH, FLAGS)
-
Change the file status flags and access modes, function F_SETFL.
- setfd_lease(FD|FH, FLAGS)
-
Function F_SETLEASE.
example:
setfd_lease(\*STDOUT, F_WRLCK) or die $!;
- setfd_lock(FD|FH, OPTIONS)
-
Functions F_SETLK and F_SETLKW: request a lock for (a section of) a file.
-Option--Default len <until end of file> start 0 type F_RDLCK wait <false> whence SEEK_SET
- len => BLOCK_LENGTH
- start => FILEPOS
- type => F_RDLCK|F_WRLCK|F_UNLCK
- wait => BOOLEAN
- whence => SEEK_SET|SEEK_CUR|SEEK_END
example:
setfd_lock \*IN, type => F_WRLCK, wait => 1 or die "cannot lock IN: $!\n";
- setfd_notify(FD|FH, FLAGS)
-
Function F_NOTIFY.
example:
my $d = openfd('/etc', O_RDONLY|O_DIRECTORY) or die $!; setfd_notify($d, DN_ACCESS|DN_CREATE|DN_MULTISHOT) or die $!;
- setfd_owner(FD|FH, PID, OPTIONS)
-
Function F_GETOWN or F_GETOWN_EX. The _EX version is attempted if provided.
-Option--Default type <looks at sign>
example:
setfd_owner($fh, $pid) or die $!; setfd_owner($fh, $pid, type => F_OWNER_TID) or die $!; setfd_owner($fh, -9); # $pid=9, type=F_OWNER_PGRP
- setfd_pipe_size(FD|FH, SIZE)
-
Function F_SETPIPE_SZ.
example:
setfd_pipe_size($pipe, 16384) or die $!;
- setfd_signal(FD|FH, SIGNAL)
-
Function F_SETSIG.
example:
setfd_signal(\*STDOUT, SIGINT) or die $!;
CONSTANTS
The following constants are exported, shown here with the values discovered during installation of this module.
DN_ACCESS 1 F_NOTIFY 1026
DN_ATTRIB 32 F_RDLCK 0
DN_CREATE 4 F_SETFD 2
DN_DELETE 8 F_SETFL 4
DN_MODIFY 2 F_SETLEASE 1024
DN_MULTISHOT 2147483648 F_SETLKW 7
DN_RENAME 16 F_SETOWN 8
F_DUPFD 0 F_SETOWN_EX 15
F_DUPFD_CLOEXEC 1030 F_SETPIPE_SZ 1031
F_GETFD 1 F_SETSIG 10
F_GETFL 3 F_UNLCK 2
F_GETLEASE 1025 F_WRLCK 1
F_GETLK 5 FAPPEND undef
F_GETOWN 9 FASYNC undef
F_GETOWN_EX 16 FD_CLOEXEC undef
F_GETPIPE_SZ 1032 FNDELAY undef
F_GETSIG 11 FNONBLOCK undef
SEE ALSO
This module is part of POSIX-1003 distribution version 0.94_3, built on June 10, 2013. Website: http://perl.overmeer.net. The code is based on POSIX, which is released with Perl itself. See also POSIX::Util for additional functionality.
COPYRIGHTS
Copyrights 2011-2013 on the perl code and the related documentation by [Mark Overmeer]. For other contributors see ChangeLog.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html