CARVIEW |
- #fcntl FILEHANDLE,FUNCTION,SCALAR
-
Implements the fcntl(2) function. You'll probably have to say
use Fcntl;
first to get the correct constant definitions. Argument processing and value returned work just like
ioctl
below. For example:use Fcntl; my $flags = fcntl($filehandle, F_GETFL, 0) or die "Can't fcntl F_GETFL: $!";
You don't have to check for
defined
on the return fromfcntl
. Likeioctl
, it maps a0
return from the system call into"0 but true"
in Perl. This string is true in boolean context and0
in numeric context. It is also exempt from the normalArgument "..." isn't numeric
warnings on improper numeric conversions.Note that
fcntl
raises an exception if used on a machine that doesn't implement fcntl(2). See the Fcntl module or your fcntl(2) manpage to learn what functions are available on your system.Here's an example of setting a filehandle named
$REMOTE
to be non-blocking at the system level. You'll have to negotiate$|
on your own, though.use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK); my $flags = fcntl($REMOTE, F_GETFL, 0) or die "Can't get flags for the socket: $!\n"; fcntl($REMOTE, F_SETFL, $flags | O_NONBLOCK) or die "Can't set flags for the socket: $!\n";
Portability issues: "fcntl" in perlport.
Perldoc Browser is maintained by Dan Book (DBOOK). Please contact him via the GitHub issue tracker or email regarding any issues with the site itself, search, or rendering of documentation.
The Perl documentation is maintained by the Perl 5 Porters in the development of Perl. Please contact them via the Perl issue tracker, the mailing list, or IRC to report any issues with the contents or format of the documentation.