open () retorna novo descritor de arquivo posix [fechado]

1

Eu tenho que definir os valores de retorno para o open () no posix. Como eu retorno "o novo descritor de arquivo" como é dito nas man pages do Linux:

RETURN VALUE

 open(), openat(), and creat() return the new file descriptor, or -1
 if an error occurred (in which case, errno is set appropriately).

Edit: Obrigado goldilocks! Eu não estava olhando na direção certa. O que estou fazendo é que estou corrigindo o valor de retorno dessa chamada de sistema. Aparentemente, isso retorna algo errado.

    
por JaUnCpp 09.11.2014 / 17:16

1 resposta

0

Para abrir um arquivo, você usa uma construção como a seguinte:

int fd;
if ((fd = open(path, flags)) < 0) {
    /* An error occurred, the reason is in errno */
    int _errno = errno; /* Save errno value */
    fprintf(stderr, "Failed opening file '%s': %s\n", path, strerror(_errno));
    return;
}
/* The file was successfully opened */

Portanto, você tem apenas um valor de retorno, que normalmente é o descritor de arquivo. Se for -1 , indica que ocorreu um erro. O erro que ocorreu é armazenado na variável errno (que você obtém incluindo errno.h em seu arquivo de origem).

    
por 09.11.2014 / 18:13