POSIX::1003::Fcntl - POSIX function fcntl
POSIX::1003::Fcntl is a POSIX::1003::Module
use POSIX::1003::Fcntl;
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.
See "METHODS" in POSIX::1003::Module
See perlfunc fcntl. This raw call to fcntl() is only in some cases simple, but often isn't.
perlfunc fcntl
fcntl()
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;
Control the file descriptor flags, function F_GETFD.
Get the file status flags and access modes, function F_GETFL.
my $flags = getfd_flags(fd); if ((flags & O_ACCMODE) == O_RDWR)
Function F_GETLCK. Returns the first lock which would prevent getting the lock. The OPTIONS are the same as for setfd_lock().
if(my $lock = getfd_islocked \*IN) ...
Function F_GETLEASE.
my $lease = getfd_lease(\*STDIN) or die $!; if($lease != F_RDLCK) ...
Function F_GETOWN or F_GETOWN_EX.
my ($type, $pid) = getfd_owner($fd); defined $type or die $!; if($type==F_OWNER_PGRP) ... my $pid = getfd_owner($fd) or die $!;
Function F_GETPIPE_SZ.
my $size = getfd_pipe_size($pipe) or die $!;
Function F_GETSIG.
my $signal = getfd_signal(\*STDOUT) or die $!;
Change the file descriptor flags, function F_SETFD.
Change the file status flags and access modes, function F_SETFL.
Function F_SETLEASE.
setfd_lease(\*STDOUT, F_WRLCK) or die $!;
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
setfd_lock \*IN, type => F_WRLCK, wait => 1 or die "cannot lock IN: $!\n";
Function F_NOTIFY.
my $d = openfd('/etc', O_RDONLY|O_DIRECTORY) or die $!; setfd_notify($d, DN_ACCESS|DN_CREATE|DN_MULTISHOT) or die $!;
Function F_GETOWN or F_GETOWN_EX. The _EX version is attempted if provided.
-Option--Default type <looks at sign>
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
Function F_SETPIPE_SZ.
setfd_pipe_size($pipe, 16384) or die $!;
Function F_SETSIG.
setfd_signal(\*STDOUT, SIGINT) or die $!;
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
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 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
To install POSIX::1003, copy and paste the appropriate command in to your terminal.
cpanm
cpanm POSIX::1003
CPAN shell
perl -MCPAN -e shell install POSIX::1003
For more information on module installation, please visit the detailed CPAN module installation guide.