- 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 return works just like
ioctlbelow. For example:use Fcntl; fcntl($filehandle, F_GETFL, $packed_return_buffer) or die "can't fcntl F_GETFL: $!";
You don't have to check for
definedon the return fromfcntl. Likeioctl, it maps a0return from the system call into"0 but true"in Perl. This string is true in boolean context and0in numeric context. It is also exempt from the normal -w warnings on improper numeric conversions.Note that
fcntlwill produce a fatal error 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
REMOTEto 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);
$flags = fcntl(REMOTE, F_GETFL, 0) or die "Can't get flags for the socket: $!\n";
$flags = fcntl(REMOTE, F_SETFL, $flags | O_NONBLOCK) or die "Can't set flags for the socket: $!\n";

