open(2): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '= open(2) - Linux manual page = == Namn == '''open''' - Öppnar eller skapar en fil == Bibliotek == Standard C-biblioteket (libc, -lc) == Synopsis == <pre> #include <fcntl.h> #include <sys/stat.h> #include <unistd.h> int open(const char *pathname, int flags, ... →‎mode_t mode: ); </pre> == Beskrivning == Funktionen '''open''' används för att öppna en fil eller skapa en ny fil. Den returnerar en filbeskrivare som kan användas för att läsa, skriva eller utfö...')
 
Ingen redigeringssammanfattning
Rad 1: Rad 1:
= open(2) - Linux manual page =
= open(2) - Öppnar en fil =


== Namn ==
== Namn ==
'''open''' - Öppnar eller skapar en fil
'''open''' - Öppnar och eventuellt skapar en fil
 
== Bibliotek ==
Standard C-biblioteket (libc, -lc)


== Synopsis ==
== Synopsis ==
Rad 13: Rad 10:
#include <unistd.h>
#include <unistd.h>


int open(const char *pathname, int flags, ... /* mode_t mode */ );
int open(const char *pathname, int flags, ...);
int openat(int dirfd, const char *pathname, int flags, ...);
</pre>
</pre>


== Beskrivning ==
== Beskrivning ==
Funktionen '''open''' används för att öppna en fil eller skapa en ny fil. Den returnerar en filbeskrivare som kan användas för att läsa, skriva eller utföra andra operationer på filen.
**open()** öppnar den fil som specificeras av ''pathname''. Om filen inte existerar kan den skapas beroende på inställningen av ''flags'' och de tillhandahållna behörigheterna. Funktionen returnerar en filbeskrivare som används för efterföljande operationer på filen.
 
=== Argument ===
* '''pathname''' 
  Den sökväg till filen som ska öppnas.
 
* '''flags''' 
  En eller flera flaggor som specificerar öppningsläget och andra alternativ. De vanligaste är:
  * '''O_RDONLY''' – Öppna för endast läsning.
  * '''O_WRONLY''' – Öppna för endast skrivning.
  * '''O_RDWR''' – Öppna för både läsning och skrivning.
  * '''O_CREAT''' – Skapa filen om den inte existerar (kräver ''mode'').
  * '''O_TRUNC''' – Trunkera filen till längd 0 om den existerar.
  * '''O_APPEND''' – Lägg till data i slutet av filen.
 
* '''mode''' 
  Används om filen skapas (endast relevant med flaggan '''O_CREAT'''). Detta specificerar filens behörigheter (t.ex. 0644).


### Parametrar
=== Funktioner ===
* '''pathname''': Sökvägen till filen som ska öppnas eller skapas.
* '''open()'''
* '''flags''': Anger öppningsläget och alternativ (kombineras med bitvis OR). Exempel på flaggor:
   Öppnar en fil med absolut eller relativ sökväg.
  - '''O_RDONLY''': Öppna filen för endast läsning.
   - '''O_WRONLY''': Öppna filen för endast skrivning.
  - '''O_RDWR''': Öppna filen för både läsning och skrivning.
  - '''O_CREAT''': Skapa filen om den inte existerar.
  - '''O_TRUNC''': Truncera filen till 0 byte om den redan existerar och öppnas för skrivning.
  - '''O_APPEND''': Skrivningar sker alltid i slutet av filen.
  - '''O_EXCL''': Misslyckas om filen redan existerar (används tillsammans med '''O_CREAT''').


* '''mode''': Om '''O_CREAT''' används, specificerar detta filens behörigheter (t.ex. 0644 för läs/skrivbehörighet för ägare och läsbehörighet för andra).
* '''openat()'''
  Liknar **open()**, men gör det möjligt att specificera en baspunkt för ''pathname'' relativt till en katalogbeskrivare (''dirfd'').


### Returnerar
=== Returneringsvärde ===
* Vid framgång: En icke-negativ filbeskrivare.
Vid framgång returnerar **open()** och **openat()** en filbeskrivare (ett icke-negativt heltal). Vid fel returneras -1, och ''errno'' sätts för att indikera felet.
* Vid fel: '''-1''', och [[errno(3)]] sätts för att indikera felet.


== Fel ==
== Fel ==
'''open''' kan returnera följande felkoder i [[errno(3)]]:
Vanliga fel inkluderar:
* '''EACCES''': Behörighet saknas för att öppna filen.
 
* '''EEXIST''': Filen existerar redan och '''O_CREAT | O_EXCL''' användes.
* '''EACCES'''
* '''ENOENT''': Filen eller en katalog i sökvägen existerar inte.
  Behörighet nekas för den begärda operationen.
* '''EINVAL''': Ogiltiga flaggor angavs.
 
* '''EMFILE''': Processen har redan öppnat maximalt antal filer.
* '''EEXIST'''
  Filen existerar redan, och flaggan '''O_CREAT | O_EXCL''' användes.
 
* '''ENOENT'''
  Sökvägen existerar inte, och '''O_CREAT''' användes inte.
 
* '''ENOTDIR'''
  En del av sökvägen är inte en katalog.


För en fullständig lista över felkoder, se manualen.
* '''EMFILE''' 
  Processen har nått maximalt antal öppna filer.


== Exempel ==
== Exempel ==
Öppna en fil för både läsning och skrivning, skapa den om den inte finns:
<pre>
<pre>
#include <fcntl.h>
int fd = open("example.txt", O_RDWR | O_CREAT, 0644);
#include <unistd.h>
if (fd == -1) {
#include <stdio.h>
    perror("open");
 
     exit(EXIT_FAILURE);
int main() {
    const char *filename = "example.txt";
    int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644);
   
    if (fd == -1) {
        perror("open");
        return 1;
    }
 
    write(fd, "Hej, värld!\n", 12);
     close(fd);
    return 0;
}
}
</pre>
</pre>
== Standarder ==
Funktionen '''open''' följer POSIX.1-2001, POSIX.1-2008, och är en del av System V Interface Definition (SVID).


== Se även ==
== Se även ==
Rad 74: Rad 76:
* [[read(2)]]
* [[read(2)]]
* [[write(2)]]
* [[write(2)]]
* [[openat(2)]]
* [[fcntl(2)]]
* [[fcntl(2)]]
* [[stat(2)]]
* [[stat(2)]]
* [[errno(3)]]
== Kolofon ==
Denna sida är en översättning av manualen för '''open(2)''', hämtad från ⟨https://man7.org/linux/man-pages/man2/open.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/open.2.html
== Författare ==
<BR>[[PHP]]
Denna manualsida skrevs av [[Michael Kerrisk]].
<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 ]]
== Källor ==
Den officiella manualen finns på [https://man7.org/linux/man-pages/man2/open.2.html man7.org].

Versionen från 22 november 2024 kl. 08.23

open(2) - Öppnar en fil

Namn

open - Öppnar och eventuellt skapar en fil

Synopsis

#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>

int open(const char *pathname, int flags, ...);
int openat(int dirfd, const char *pathname, int flags, ...);

Beskrivning

    • open()** öppnar den fil som specificeras av pathname. Om filen inte existerar kan den skapas beroende på inställningen av flags och de tillhandahållna behörigheterna. Funktionen returnerar en filbeskrivare som används för efterföljande operationer på filen.

Argument

  • pathname
 Den sökväg till filen som ska öppnas.
  • flags
 En eller flera flaggor som specificerar öppningsläget och andra alternativ. De vanligaste är:
 * O_RDONLY – Öppna för endast läsning.
 * O_WRONLY – Öppna för endast skrivning.
 * O_RDWR – Öppna för både läsning och skrivning.
 * O_CREAT – Skapa filen om den inte existerar (kräver mode).
 * O_TRUNC – Trunkera filen till längd 0 om den existerar.
 * O_APPEND – Lägg till data i slutet av filen.
  • mode
 Används om filen skapas (endast relevant med flaggan O_CREAT). Detta specificerar filens behörigheter (t.ex. 0644).

Funktioner

  • open()
 Öppnar en fil med absolut eller relativ sökväg.
  • openat()
 Liknar **open()**, men gör det möjligt att specificera en baspunkt för pathname relativt till en katalogbeskrivare (dirfd).

Returneringsvärde

Vid framgång returnerar **open()** och **openat()** en filbeskrivare (ett icke-negativt heltal). Vid fel returneras -1, och errno sätts för att indikera felet.

Fel

Vanliga fel inkluderar:

  • EACCES
 Behörighet nekas för den begärda operationen.
  • EEXIST
 Filen existerar redan, och flaggan O_CREAT | O_EXCL användes.
  • ENOENT
 Sökvägen existerar inte, och O_CREAT användes inte.
  • ENOTDIR
 En del av sökvägen är inte en katalog.
  • EMFILE
 Processen har nått maximalt antal öppna filer.

Exempel

Öppna en fil för både läsning och skrivning, skapa den om den inte finns:

int fd = open("example.txt", O_RDWR | O_CREAT, 0644);
if (fd == -1) {
    perror("open");
    exit(EXIT_FAILURE);
}

Se även

Författare

Denna manualsida skrevs av Michael Kerrisk.

Källor

Den officiella manualen finns på man7.org.