ioctl
FILEHANDLE,FUNCTION,SCALAR
Įdiegia ioctl(2) funkciją. Greičiausia pirmiausia reikės
require "ioctl.ph"; # greičiausia /usr/local/lib/perl/ioctl.ph
kad gauti teisingus funkcijos apibrėžimus. Jei ioctl.ph neegzistuoja arba neturi teisingų apibrėžimų reikės kapstytis patiems su C headerių pagalba, kaip kad <sys/ioctl.h>. (Yra Perl skriptas, pavadintas h2ph, kuris ateina su Perl ir gali pagelbėti, bet jis sudėtingas.) SCALAR bus nuskaitomas ir/arba rašomas, priklausomai nuo FUNCTION - SCALAR rodyklės į eilutę reikšmė bus perduodama kaip trečias argumentas faktinio ioctl
kvietimo. (Jei SCALAR neturi eilutės reikšmės, bet turi skaitinę reikšmę, skaitinė reikšmė bus perduodama, o ne rodyklė į eilutės reikšmę. Garantuoti, kad tai bus tiesa, reikia pridėti 0
prie skaliaro prieš jį naudojant.)pack
ir unpack
funkcijos gali būti reikalingos manipuliacijai su struktūrų reikšmėmis naudojamomis ioctl
.
ioctl
gražinama reikšmė (ir
fcntl
) yra tokie:
Jei OS gražina: tada Perl gražina:
-1 neapibrėžtą reikšmę
0 eilutė "0 but true"
bet ką kita tą numerį
Taigi Perl gražina true sėkmės atveju ir false nesėkmės, tačiau vis dar lengvai galima nustatyti tikrąją reikšmę, gražintą operacinės sitemos:
$retval = ioctl(...) || -1;
printf "System returned %d\n", $retval;
Speciali eilutė "0 but
true"
yra atleidžiama nuo -w diskusijų apie nekorektiškus skaitinius vertimus.