Linux x86_64Sistema de arquivos#280
utimensat
Altera os timestamps de acesso e modificação de um arquivo, com resolução de nanossegundos, relativo a um descritor de diretório.
Descrição
Forma moderna e recomendada de ajustar timestamps: suporta UTIME_NOW e UTIME_OMIT por campo (definir para o horário atual, ou não alterar aquele timestamp especificamente), além de operar relativa a `dirfd` como o resto da família *at().
man 2Desde o kernel 2.6.22
Assinatura
int utimensat(
int dirfd,
const char * pathname,
const struct timespec[2] times,
int flags
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| dirfd | int | Descritor do diretório base, ou AT_FDCWD. |
| pathname | const char * | Caminho, absoluto, relativo a `dirfd`, ou NULL para operar sobre o próprio `dirfd`. |
| times | const struct timespec[2] | Novos timestamps de acesso e modificação; UTIME_NOW/UTIME_OMIT por campo. |
| flags | int | AT_SYMLINK_NOFOLLOW. |
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 | timesconst struct timespec[2] |
| r10 | argumento 4 | flagsint |
Valor de retorno
0 em sucesso; -1 em erro, 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.
- EPERM(1)
- Operação não permitida (falta de privilégio).
- EROFS(30)
- Sistema de arquivos somente leitura.