close(2): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '= close(2) - Linux manual page = == Namn == '''close''' - Stänger en filbeskrivare == Bibliotek == Standard C-biblioteket (libc, -lc) == Synopsis == <pre> #include <unistd.h> int close(int fd); </pre> == Beskrivning == Funktionen '''close''' stänger en öppen filbeskrivare. När en filbeskrivare stängs: * Systemresurser associerade med den frigörs. * Om det inte finns några andra filbeskrivare som refererar till filen, skrivs eventuellt buffrad data till disken...')
 
Ingen redigeringssammanfattning
Rad 15: Rad 15:


== Beskrivning ==
== Beskrivning ==
Funktionen '''close''' stänger en öppen filbeskrivare. När en filbeskrivare stängs:
Funktionen '''close''' används för att stänga en öppen filbeskrivare. När filbeskrivaren stängs frigörs alla systemresurser som är associerade med den. Om filen är den sista filbeskrivaren som refererar till en öppen fil eller socket, kan systemet även:
* Systemresurser associerade med den frigörs.
* Skriva ut buffrade data till disk (för filer).
* Om det inte finns några andra filbeskrivare som refererar till filen, skrivs eventuellt buffrad data till disken.
* Generera ett EOF (slut på fil) till andra processer som läser från en rörledning eller FIFO.
* Stänga en socket-anslutning.


### Parametrar
Efter att en filbeskrivare har stängts, kan dess värde återanvändas av andra systemanrop som t.ex. [[open(2)]] eller [[dup(2)]].
* '''fd''': Filbeskrivaren som ska stängas. Den måste vara en giltig och öppen beskrivare.


### Returnerar
== Returnerar ==
* Vid framgång: '''0'''.
* '''0''' vid framgång.
* Vid fel: '''-1''', och [[errno(3)]] sätts för att indikera felet.
* '''-1''' vid fel, och [[errno(3)]] sätts för att indikera felet.


== Fel ==
== Fel ==
'''close''' kan returnera följande felkoder i [[errno(3)]]:
Följande fel kan inträffa vid användning av '''close''':
* '''EBADF''': '''fd''' är inte en giltig filbeskrivare.
 
* '''EINTR''': Systemanropet avbröts av en signal innan det kunde avslutas.
* '''EBADF''': Filbeskrivaren är inte giltig eller inte öppen.
* '''EIO''': Ett in-/ut-fel inträffade vid stängning av filen.
* '''EINTR''': Systemanropet avbröts av en signal innan det kunde slutföras.
* '''EIO''': Ett in-/ut-fel inträffade vid stängningen.
 
== Standarder ==
Funktionen '''close''' följer:
* POSIX.1-2001
* POSIX.1-2008
* System V Interface Definition (SVID)
 
== Historia ==
Funktionen '''close''' är en del av UNIX-arvet och har varit tillgänglig i alla versioner av UNIX sedan dess första implementation.


== Exempel ==
== Exempel ==
Här är ett exempel som visar användning av '''close''':
<pre>
<pre>
#include <unistd.h>
#include <unistd.h>
Rad 57: Rad 69:
}
}
</pre>
</pre>
== Standarder ==
'''close''' följer POSIX.1-2001, POSIX.1-2008 och är en del av System V Interface Definition (SVID).


== Anmärkningar ==
== Anmärkningar ==
* Efter att en filbeskrivare har stängts, är det ogiltigt att använda den igen tills den eventuellt återanvänds av systemet.
* Om en process avslutas, stänger operativsystemet automatiskt alla öppna filbeskrivare som tillhör processen.
* Om en process avslutas, stängs automatiskt alla öppna filbeskrivare som tillhör processen.
* Om en signal avbryter '''close''' innan det kan slutföras, kan det vara osäkert att försöka igen, beroende på implementeringen.
* Att inte stänga öppna filbeskrivare kan leda till att systemresurser läcker, vilket kan påverka prestandan negativt.


== Se även ==
== Se även ==

Versionen från 22 november 2024 kl. 08.13

close(2) - Linux manual page

Namn

close - Stänger en filbeskrivare

Bibliotek

Standard C-biblioteket (libc, -lc)

Synopsis

#include <unistd.h>

int close(int fd);

Beskrivning

Funktionen close används för att stänga en öppen filbeskrivare. När filbeskrivaren stängs frigörs alla systemresurser som är associerade med den. Om filen är den sista filbeskrivaren som refererar till en öppen fil eller socket, kan systemet även:

  • Skriva ut buffrade data till disk (för filer).
  • Generera ett EOF (slut på fil) till andra processer som läser från en rörledning eller FIFO.
  • Stänga en socket-anslutning.

Efter att en filbeskrivare har stängts, kan dess värde återanvändas av andra systemanrop som t.ex. open(2) eller dup(2).

Returnerar

  • 0 vid framgång.
  • -1 vid fel, och errno(3) sätts för att indikera felet.

Fel

Följande fel kan inträffa vid användning av close:

  • EBADF: Filbeskrivaren är inte giltig eller inte öppen.
  • EINTR: Systemanropet avbröts av en signal innan det kunde slutföras.
  • EIO: Ett in-/ut-fel inträffade vid stängningen.

Standarder

Funktionen close följer:

  • POSIX.1-2001
  • POSIX.1-2008
  • System V Interface Definition (SVID)

Historia

Funktionen close är en del av UNIX-arvet och har varit tillgänglig i alla versioner av UNIX sedan dess första implementation.

Exempel

Här är ett exempel som visar användning av close:

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>

int main() {
    const char *filename = "example.txt";
    int fd = open(filename, O_RDONLY);

    if (fd == -1) {
        perror("open");
        return 1;
    }

    // Använd filbeskrivaren för att läsa eller skriva...

    if (close(fd) == -1) {
        perror("close");
        return 1;
    }

    return 0;
}

Anmärkningar

  • Om en process avslutas, stänger operativsystemet automatiskt alla öppna filbeskrivare som tillhör processen.
  • Om en signal avbryter close innan det kan slutföras, kan det vara osäkert att försöka igen, beroende på implementeringen.
  • Att inte stänga öppna filbeskrivare kan leda till att systemresurser läcker, vilket kan påverka prestandan negativt.

Se även

Kolofon

Denna sida är en översättning av manualen för close(2), hämtad från ⟨https://man7.org/linux/man-pages/man2/close.2.html⟩, en del av Linux manualprojektet. För att rapportera fel eller föreslå förbättringar, besök ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.

Sidslut

Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man2/close.2.html
PHP


Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till PC Service som har sponsrat Linux.se med webbhotell.