_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/fcntl - failų kontrolės sisteminis iškveitimas
  • fcntl FILEHANDLE,FUNCTION,SCALAR

    Realizuoja fcntl(2) funkciją. Ko gero reiks vartoti

        use Fcntl;

    pirmiausia, kad gautute teisingus konstantų apibrėžimus. Argumentų perdavimas ir reikšmės gražinimas veikia analogiškai ioctl. Pavyzdžiui:

        use Fcntl;
        fcntl($filehandle, F_GETFL, $packed_return_buffer)
    	or die "can't fcntl F_GETFL: $!";

    Nereikia tikrinti ar defined kai grąžinama iš fcntl. Kaip ioctl, jis priskiria 0 rezultatą iš sisteminio kvietimo į "0 but true" Perle. Šis sakinys yra teisingas loginiam kontekste ir 0 skaitiniam kontekste. Rezultatas taip pat atleistas nuo normalaus -w įspėjimo kai atliekamos netikslios skaitinės konvertacijos.

    Pažymėtina, jogfcntl duos fatal error, jei bus naudotas sistemoje, kurioje nėra įdiegtas fcntl(2). Žr. Fcntl modulį arba fcntl(2) manualo puslapį, kad suprasti kokios funkcijos yra galimos sistemoje.

    Štai pavyzdys kaip nustatyti filehandle'ą, pavadintą REMOTE, kad šis būtų neblokuojamos sisteminiam lygmeny. Susidoroti su $| reikės pačiam.

        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";
algirdas@perl.lt 2005.04.11 - $dabar