open(2): Skillnad mellan sidversioner
Hoppa till navigering
Hoppa till sök
Admin (diskussion | bidrag) (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ö...') |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
Rad 1: | Rad 1: | ||
= open(2) - | = open(2) - Öppnar en fil = | ||
== Namn == | == Namn == | ||
'''open''' - Öppnar | '''open''' - Öppnar och eventuellt skapar en fil | ||
== Synopsis == | == Synopsis == | ||
Rad 13: | Rad 10: | ||
#include <unistd.h> | #include <unistd.h> | ||
int open(const char *pathname, int flags, ... | int open(const char *pathname, int flags, ...); | ||
int openat(int dirfd, const char *pathname, int flags, ...); | |||
</pre> | </pre> | ||
== Beskrivning == | == 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 == | == Fel == | ||
Vanliga fel inkluderar: | |||
* '''EACCES''' | |||
* '''EEXIST''' | * '''EACCES''' | ||
* '''ENOENT''' | 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 == | == Exempel == | ||
Öppna en fil för både läsning och skrivning, skapa den om den inte finns: | |||
<pre> | <pre> | ||
int fd = open("example.txt", O_RDWR | O_CREAT, 0644); | |||
if (fd == -1) { | |||
perror("open"); | |||
exit(EXIT_FAILURE); | |||
int | |||
} | } | ||
</pre> | </pre> | ||
== Se även == | == Se även == | ||
Rad 74: | Rad 76: | ||
* [[read(2)]] | * [[read(2)]] | ||
* [[write(2)]] | * [[write(2)]] | ||
* [[fcntl(2)]] | * [[fcntl(2)]] | ||
* [[stat(2)]] | * [[stat(2)]] | ||
== Författare == | |||
Denna manualsida skrevs av [[Michael Kerrisk]]. | |||
[ | == 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.