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.

POSIX::1003::Fcntl->exampleValue(NAME)

See "METHODS" in POSIX::1003::Module

$obj->import()

See "METHODS" in POSIX::1003::Module

FUNCTIONS

Standard POSIX

fcntl(FD, FUNCTION, SCALAR)

See perlfunc fcntl. This raw call to fcntl() 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>
close_on_exec => BOOLEAN

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>
type => F_OWNER_TID|F_OWNER_PID|F_OWNER_PGRP

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