open(2)
Version från den 22 november 2024 kl. 08.23 av Admin (diskussion | bidrag)
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.