#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); int creat(const char *pathname, mode_t mode);
Valor de retorno: descritor do arquivo ou -1 em caso de erro.
As chamadas open() e creat() possibilitam a criação de um arquivo no sistema.
A primitiva creat() realiza a criação de um arquivo, com o nome definido pelo parâmetro path. O inteiro perm corresponde ao número octal (direito de acesso) conforme descrito em 1.4.2.
Se o arquivo não existia, ele é aberto em modo escrita. Senão, a autorização de escrita não é necessária (apenas a autorização para execução já seria suficiente). Neste caso, usuário e grupo efetivos tornam-se proprietários do arquivo. Nem os proprietários dos arquivos, nem as autorizações são modificados, mas seu tamanho é fixado em 0, e o arquivo é aberto em modo escrita (o argumento perm será então ignorado).
Para criar um arquivo de nome teste_create com as autorizações de leitura e escrita para o proprietário e o grupo, deve-se escrever:
if ( (fd=creat("teste\_create", 0666) ) == -1) perror("Error creat()");
A primitiva open() permite a abertura (ou a criação) de um arquivo de nome igual à string apontada pelo ponteiro pathname. O parâmetro mode determina as permissões para o uso do arquivo que foi criado. Ele só é utilizado quando open() é usado na criação de um arquivo.O parâmetro flags define a forma de abertura do arquivo, podendo receber uma ou mais constantes simbólicas separadas por operadores | (ou), definidas no arquivo <fcntl.h>, como mostra a tabela 1.1.
Exemplo:
Para criar e abrir o arquivo teste_open em modo escrita com as permissões leitura e escrita para o proprietário e para o grupo, deve-se escrever o seguinte código:
if ((fd=open(``test_open'', O_WRONLY| O_CREAT| O_TRUNC, 0666)) == -1) perror("Error open()");