Voltar à lista
Linux x86_64Arquivos & E/S#2

open

Abre (ou cria) um arquivo e retorna um novo descritor de arquivo para ele.

Descrição

Ponto de entrada para acessar praticamente qualquer coisa no sistema de arquivos. As flags controlam modo de acesso, criação, truncamento e uma série de comportamentos especiais (O_DIRECT, O_NONBLOCK, O_CLOEXEC, etc.).

Header: fcntl.hman 2

Nota

Prefira `openat` em código novo — permite abrir relativo a um diretório específico (via `dirfd`) em vez de sempre relativo ao diretório de trabalho atual, o que evita certas condições de corrida em código que muda de diretório.

Assinatura

int open(const char * pathname, int flags, mode_t mode);

Parâmetros

ParâmetroTipoDescrição
pathnameconst char *Caminho do arquivo.
flagsintO_RDONLY/O_WRONLY/O_RDWR combinado com O_CREAT, O_EXCL, O_TRUNC, O_APPEND, O_CLOEXEC, etc.
modemode_tPermissões do arquivo se criado (usado apenas com O_CREAT).

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1pathnameconst char *
rsiargumento 2flagsint
rdxargumento 3modemode_t

Valor de retorno

Um novo descritor de arquivo (o menor não utilizado) em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EACCES(13)
Permissão negada.
EEXIST(17)
Arquivo já existe.
EISDIR(21)
É um diretório (operação exige um arquivo comum).
ELOOP(40)
Excesso de níveis de links simbólicos (loop de symlinks).
EMFILE(24)
Limite de arquivos abertos do processo atingido.
ENFILE(23)
Limite de arquivos abertos no sistema atingido.
ENOENT(2)
Arquivo ou diretório inexistente.
ENOSPC(28)
Sem espaço livre no dispositivo.
ENOTDIR(20)
Não é um diretório.
EROFS(30)
Sistema de arquivos somente leitura.

Relacionadas

Equivalente em Windows Win32