Linux x86_64Sistema de arquivos#439
faccessat2
Como faccessat, mas com suporte real a AT_SYMLINK_NOFOLLOW para checar permissões sem seguir links simbólicos.
Descrição
Corrige a mesma lacuna que `fchmodat2` corrige para `fchmodat`: a `faccessat` original nunca implementou de fato essa flag no kernel.
man 2Desde o kernel 5.8
Assinatura
int faccessat2(int dirfd, const char * pathname, int mode, int flags);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| dirfd | int | Descritor do diretório base, ou AT_FDCWD. |
| pathname | const char * | Caminho, absoluto ou relativo a `dirfd`. |
| mode | int | F_OK, R_OK, W_OK, X_OK. |
| flags | int | AT_EACCESS, AT_SYMLINK_NOFOLLOW, AT_EMPTY_PATH. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | dirfdint |
| rsi | argumento 2 | pathnameconst char * |
| rdx | argumento 3 | modeint |
| r10 | argumento 4 | flagsint |
Valor de retorno
0 se o acesso seria permitido; -1 caso contrário, com errno definido.
Códigos de erro (errno)
- EACCES(13)
- Permissão negada.
- EBADF(9)
- Descritor de arquivo inválido.
- EINVAL(22)
- Argumento inválido.
- ENOENT(2)
- Arquivo ou diretório inexistente.