_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Funkcijos/close - uždaryti failo (ar pipe'o ar socket'o) jungtį

  • close FILEHANDLE
  • close

    Uždaro failą ar pipe'ą, susietą su failo handl'u, gražinant true tik jei IO buferiai sėkminai išvalyti ir u-daro sistemos failo deskriptorių. Uždaro dabar pasirinktą filehandle'ą, jei argumentas praleistas.

    Nereikia užadryti FILEHANDLE, jei iškart žadama daryti kitą open ant to paties FILEHANDLE, nes open pats jį uždarys. (Žr. open.) Vis dėlto, aiškus close įvedimo faile, iš naujo nustato eilučių skaitliuką($. ), tuo tarpu neišreikštas žodžiais uždarymas, atliktas open - ne.

    Jei failo handle'as atėjo iš piped open, close papildomai gražins false, jei vienas kitų sisteminių kreipinių nepavyksta arba programa baigia darbą nenuliniu statusu (non-zero). (Jei problema buvo, kad problema baigė ne nuliu, $! bus 0 .) Uždarant pipe'ą taip pat laukiama kol baigsis procesas, esantis pipe, tuo atveju, jei būtų norima pažiūrėti pipe išvedimą po to. Ir netiesiogiai priskiria komandos exit statuso reikšmę į $? .

    Per anksti uždarius nuskaitantį pipe "galą" (t.y. prieš procesui rašant į jį, kitas galas uždaromas), rezultate SIGPIPE bus pristatytas rašančiajam. Jei kitas "galas" nesugeba su tuo susitvarkyti, reiktų nuskaityti visus duomenis prieš uždarant pipe'ą.

    Pavyzdys:

        open(OUTPUT, '|sort >foo')  # pipe, kad išrūšiuotų
            arba die "Can't start sort: $!";
        #...			# Išvesti 
        close OUTPUT		# palaukiam kol pasibaigs rūšiavimas
            arba warn $! ? "Error closing sort pipe: $!"
                        o>: "Exit status $? from sort";
        open(INPUT, 'foo')		# gauname rūšiavimo rezultatus
            or die "Can't open 'foo' for input: $!";

    FILEHANDLE gali būti išsireiškimas, kurio reikšmė gali būti panaudota kaip netiesioginis filehandle'as, dažniausiai tikruoju filehandle'o vardu.

algirdas@perl.lt 2005.04.11 - $dabar