ioctl FILEHANDLE,FUNCTION,SCALAR
Implements the ioctl(2) function. You'll probably first have to say
1 2 | require "sys/ioctl.ph" ; # probably in # $Config{archlib}/sys/ioctl.ph |
to get the correct function definitions. If sys/ioctl.ph doesn't exist or doesn't have the correct definitions you'll have to roll your own, based on your C header files such as <sys/ioctl.h>. (There is a Perl script called h2ph that comes with the Perl kit that may help you in this, but it's nontrivial.) SCALAR will be read and/or written depending on the FUNCTION; a C pointer to the string value of SCALAR will be passed as the third argument of the actual ioctl
call. (If SCALAR has no string value but does have a numeric value, that value will be passed rather than a pointer to the string value. To guarantee this to be true, add a 0
to the scalar before using it.) The pack
and unpack
functions may be needed to manipulate the values of structures used by ioctl
.
The return value of ioctl
(and fcntl
) is as follows:
1 2 3 4 | if OS returns: then Perl returns: -1 undefined value 0 string "0 but true" anything else that number |
Thus Perl returns true on success and false on failure, yet you can still easily determine the actual value returned by the operating system:
1 2 | $retval = ioctl (...) || -1; printf "System returned %d\n" , $retval ; |
The special string "0 but true"
is exempt from -w complaints about improper numeric conversions.
Portability issues: ioctl in perlport.
Please login to continue.