NAME
ioctl - system-dependent device control system call
SYNOPSIS
ioctl FILEHANDLE,FUNCTION,SCALAR
DESCRIPTION
Implements the
ioctl(2) function. You'll
probably have to say
require "ioctl.ph"; # probably in /usr/local/lib/perl/ioctl.ph
first to get the correct function definitions. If 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 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 are useful for manipulating the values of structures used by
ioctl(). The following example sets the erase character to
DEL.
require 'ioctl.ph';
$getp = &TIOCGETP;
die "NO TIOCGETP" if $@ || !$getp;
$sgttyb_t = "ccccs"; # 4 chars and a short
if (ioctl(STDIN,$getp,$sgttyb)) {
@ary = unpack($sgttyb_t,$sgttyb);
$ary[2] = 127;
$sgttyb = pack($sgttyb_t,@ary);
ioctl(STDIN,&TIOCSETP,$sgttyb)
|| die "Can't ioctl: $!";
}
The return value of ioctl() (and fcntl()) is as follows:
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:
($retval = ioctl(...)) || ($retval = -1);
printf "System returned %d\n", $retval;
The special string ``0 but true'' is excempt from -w complaints about improper numeric conversions.
DISCLAIMER
We are painfully aware that these documents may contain incorrect links and misformatted HTML. Such bugs lie in the automatic translation process that automatically created the hundreds and hundreds of separate documents that you find here. Please do not report link or formatting bugs, because we cannot fix per-document problems. The only bug reports that will help us are those that supply working patches to the installhtml or pod2html programs, or to the Pod::HTML module itself, for which I and the entire Perl community will shower you with thanks and praises.If rather than formatting bugs, you encounter substantive content errors in these documents, such as mistakes in the explanations or code, please use the perlbug utility included with the Perl distribution.
- --Tom Christiansen, Perl Documentation Compiler and Editor
Return to the Perl Documentation Index.
Return to the Perl Home Page.
