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...')
 
 
(3 mellanliggande sidversioner av samma användare visas inte)
Rad 15: Rad 15:


== Beskrivning ==
== Beskrivning ==
Funktionen '''close''' stänger en öppen filbeskrivare. När en filbeskrivare stängs:
close() stänger en filbeskrivare, så att den inte längre refererar till någon fil och kan återanvändas. Eventuella lås på poster (se [[fcntl(2)]]) som hölls på filen och ägdes av processen tas bort, oavsett vilken filbeskrivare som användes för att erhålla låset. Detta kan få vissa olyckliga konsekvenser, och man bör vara extra försiktig vid användning av rådgivande postlås. Se [[fcntl(2)]] för en diskussion om risker och konsekvenser samt om de (förmodligen föredragna) låsen för öppna filbeskrivningar.
* Systemresurser associerade med den frigörs.
* Om det inte finns några andra filbeskrivare som refererar till filen, skrivs eventuellt buffrad data till disken.


### Parametrar
Om *fd* är den sista filbeskrivaren som refererar till den underliggande öppna filbeskrivningen (se [[open(2)]]), frigörs resurserna som är associerade med den öppna filbeskrivningen. Om filbeskrivaren var den sista referensen till en fil som har tagits bort med [[unlink(2)]], raderas filen.
* '''fd''': Filbeskrivaren som ska stängas. Den måste vara en giltig och öppen beskrivare.


### Returnerar
== Returnerar ==
* Vid framgång: '''0'''.
* '''0''' om operationen lyckas.
* 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 typen av fel.


== Fel ==
== Fel ==
'''close''' kan returnera följande felkoder i [[errno(3)]]:
'''close''' kan misslyckas med följande felkoder:
* '''EBADF''': '''fd''' är inte en giltig filbeskrivare.
 
* '''EINTR''': Systemanropet avbröts av en signal innan det kunde avslutas.
* '''EBADF''': Filbeskrivaren är ogiltig 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 under stängningen. Detta kan hända om nätverksanslutningen till en NFS-server avbryts innan all data har synkroniserats.
 
== Signalavbrott ==
Om en signal avbryter '''close''' och det misslyckas med '''EINTR''', är det inte säkert att försöka igen. Vissa operativsystem kan ha redan stängt filbeskrivaren, medan andra kan lämna den öppen.
 
== Standarder ==
Funktionen '''close''' följer:
* POSIX.1-2001
* POSIX.1-2008
* System V Interface Definition (SVID)
 
== Historia ==
'''close''' har varit en del av UNIX sedan dess första version och har implementerats i nästan alla moderna operativsystem.


== Exempel ==
== Exempel ==
Här är ett exempel som visar korrekt 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å operativsystemets implementation.
* Att inte stänga öppna filbeskrivare kan leda till resursläckage, vilket kan påverka prestanda och systemets stabilitet negativt.


== Se även ==
== Se även ==
Rad 72: Rad 82:
* [[closefrom(2)]]
* [[closefrom(2)]]
* [[errno(3)]]
* [[errno(3)]]
* [[shutdown(2)]]


== Kolofon ==
== 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⟩.
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
<BR>[[PHP]]
<HR>
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/
<BR><BR>Tack till [https://pc-service.se PC Service] som har  sponsrat [https://www.linux.se Linux.se] med webbhotell.
[[Kategori:Standard C-biblioteket ]]

Nuvarande version från 22 november 2024 kl. 08.18

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

close() stänger en filbeskrivare, så att den inte längre refererar till någon fil och kan återanvändas. Eventuella lås på poster (se fcntl(2)) som hölls på filen och ägdes av processen tas bort, oavsett vilken filbeskrivare som användes för att erhålla låset. Detta kan få vissa olyckliga konsekvenser, och man bör vara extra försiktig vid användning av rådgivande postlås. Se fcntl(2) för en diskussion om risker och konsekvenser samt om de (förmodligen föredragna) låsen för öppna filbeskrivningar.

Om *fd* är den sista filbeskrivaren som refererar till den underliggande öppna filbeskrivningen (se open(2)), frigörs resurserna som är associerade med den öppna filbeskrivningen. Om filbeskrivaren var den sista referensen till en fil som har tagits bort med unlink(2), raderas filen.

Returnerar

  • 0 om operationen lyckas.
  • -1 vid fel, och errno(3) sätts för att indikera typen av fel.

Fel

close kan misslyckas med följande felkoder:

  • EBADF: Filbeskrivaren är ogiltig eller inte öppen.
  • EINTR: Systemanropet avbröts av en signal innan det kunde slutföras.
  • EIO: Ett in-/ut-fel inträffade under stängningen. Detta kan hända om nätverksanslutningen till en NFS-server avbryts innan all data har synkroniserats.

Signalavbrott

Om en signal avbryter close och det misslyckas med EINTR, är det inte säkert att försöka igen. Vissa operativsystem kan ha redan stängt filbeskrivaren, medan andra kan lämna den öppen.

Standarder

Funktionen close följer:

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

Historia

close har varit en del av UNIX sedan dess första version och har implementerats i nästan alla moderna operativsystem.

Exempel

Här är ett exempel som visar korrekt 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å operativsystemets implementation.
  • Att inte stänga öppna filbeskrivare kan leda till resursläckage, vilket kan påverka prestanda och systemets stabilitet 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⟩.