API Unix Gerenciamento De Arquivos E PIPES
Pesquisas Acadêmicas: API Unix Gerenciamento De Arquivos E PIPES. Pesquise 861.000+ trabalhos acadêmicosPor: crvincenzi • 6/10/2014 • 4.242 Palavras (17 Páginas) • 342 Visualizações
Gerenciamento de Arquivos em UNIX
Prof. Claudio Vincenzi
Sistemas Operacionais - UNICEP
2014
Existem algumas chamadas principais na API Unix da área de gerenciamento de arquivos, a saber:
Acesso e Criação
int fd = open(char *arquivo, int flags); // inicia acesso ao arquivo
int fd = open(char *arquivo, int flags, int modos); // abre ou cria arquivo com modos de
// permissão de acesso
int fd = creat(char *arquivo, int modos); // cria arquivo com modos de permissões
int st = close(int fd); // encerra o acesso a um arquivo aberto
Onde:
arquivo: string contendo o nome do arquivo ou caminho (path) + nome do arquivo. O caminho (path) pode ser absoluto ou relativo. Exemplos:
“calendario.txt” // arquivo no diretório corrente do programa
“/home/joao/calendario.txt” // indicação de caminho absoluto (/home/joao)
“../calendario.txt” // indicação de caminho relativo (up-dir ou ..)
“dados/calendario.txt” // caminho relativo a partir do diretório corrente
Obs: a sintaxe de arquivos depende da plataforma onde o código estiver rodando. O mesmo código acima, se rodando em plataforma Windows, poderia conter strings tais como:
“C:\\Users\\Joao\\calendario.txt” // indicação de caminho absoluto
“..\\calendario.txt” // indicação de caminho relativo (up-dir ou ..)
flags: conjunto de valores simbólicos que indicam que tipo de ação deve ser realizada.
O parâmetro flags deve incluir um dos seguintes modos de acesso:
O_WRONLY
O_RDONLY
O_RDWR
Estes valores de flag solicitam abrir o arquivo somente para gravação (Write-Only, O_WRONLY), somente leitura (Read-Only, O_RDONLY) ou leitura/gravação (Read-Write, O_RDWR), respectivamente.
Exemplos de uso:
int fd_in, fd_out;
fd_in = open("/usr/aluno/dados/cadastro.dat", O_RDONLY ); // abrir arquivo cadastro.dat
// com acesso Read-Only
fd_out = open("/usr/aluno/dados/relator.txt", O_WRONLY ); // abrir arquivo relator.txt
// com acesso Write-Only
Esses valores podem ser conjugados usando a operação OR. Alguns dos mais usados são os seguintes:
O_APPEND: o arquivo é aberto em modo de adição de dados e posicionado no final.
O_TRUNC: o arquivo é aberto em modo truncagem. Todo seu conteúdo é deletado.
O_CREAT: caso o arquivo ainda não existir, este será criado.
O_EXCL: usado com O_CREAT. Caso o arquivo já existir, ocorrerá um ERRO (será uma operação CREATE-EXCLUSIVE).
Exemplos de uso:
// abrir arquivo relator.txt com acesso Write-Only
// caso arquivo não existir, será criado (O_CREAT)
fd_out = open("/usr/aluno/dados/relator.txt", O_WRONLY||O_CREAT );
modos: conjunto de valores simbólicos que indicam que tipo de proteção deve ser atribuída ao arquivo sendo criado (caso do uso de O_CREAT). Determinam o nível de acesso do usuário, do grupo do usuário e dos demais usuários do ssitema. Esses valores podem ser conjugados usando a operação OR.
São os seguintes:
Valores possíveis para mode:
S_IRWXU
00700 usuário (proprietário do arquivo) terá permissão de ler, escrever, executar
S_IRUSR
00400 usuário terá permissão de leitura
S_IWUSR
00200 usuário terá permissão de escrita
S_IXUSR
00100 usuário terá permissão de executar
S_IRWXG
00070 grupo do usuário terá permissão de ler, escrever, executar
S_IRGRP
00040 grupo do usuário terá permissão de leitura
S_IWGRP
00020 grupo do usuário terá permissão de escrita
S_IXGRP
00010 grupo do usuário terá permissão de executar
S_IRWXO
00007 demais usuários terão permissão de ler, escrever, executar
S_IROTH
00004 demais usuários terão permissão de leitura
S_IWOTH
00002 demais usuários terão permissão de escrita
S_IXOTH
00001 demais usuários terão permissão de executar
fd: variável inteira que recebe o número do descritor de arquivo. Esse número será usado para operações posteriores no arquivo acessado ou criado. Cada arquivo abertou ou criado por um programa é referenciado um descritor de arquivo.
st: status de retorno da operação. Em geral, valor zero indica sucesso e valores negativos indicam ERRO.
Um arquivo recém-aberto poderá ter sua posição de deslocamento (offset) igual a zero (padrão) ou igual à posição do último byte do arquivo (se o flag de status O_APPEND for incluido nos flags de abertura).
Operações com Arquivos
Leitura
// Solicita leitura do arquivo indicado pelo descritor fd (aberto)
//
...