_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/ioctl - priklausantis nuo sistemos device control sisteminis iškvietimas
  • 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.

algirdas@perl.lt 2005.04.11 - $dabar