System Calls (OS Calls)
As *system calls- de gestão de ficheiros permitem que um programa use directamente o sistema operativo para criar, abrir, ler, escrever e apagar ficheiros.
open()
O open() serve para abrir um ficheiro.
int open(const char *pathname, int flags);
int fd = open("dados.txt", O_RDONLY);
pathname → nome do ficheiro
flags → modo de abertura
O_RDONLY → apenas leitura
O_WRONLY → apenas escrita
O_RDWR → leitura e escrita
O_CREAT → cria o ficheiro se não existir
O retorno é um file descriptor.
read()
O read() serve para ler dados de um ficheiro.
ssize_t read(int fd, void *buffer, size_t count);
read(fd, buffer, 100);
Explicação:
fd → descritor do ficheiro
buffer → onde guardar os dados
count → número de bytes a ler
write()
O write() serve para escrever dados num ficheiro.
ssize_t write(int fd, const void *buffer, size_t count);
write(fd, "Olá", 3);
close()
O close() serve para fechar um ficheiro.
int close(int fd);
close(fd);
liberta recursos do sistema
deve ser chamada sempre no final
lseek()
O lseek() permite mover o cursor dentro do ficheiro.
off_t lseek(int fd, off_t offset, int whence);
lseek(fd, 0, SEEK_SET);
SEEK_SET → início
SEEK_CUR → posição atual
SEEK_END → fim do ficheiro
unlink()
O unlink() remove um ficheiro.
int unlink(const char *pathname);
unlink("dados.txt");
rename()
O rename() altera o nome de um ficheiro.
int rename(const char *oldname, const char *newname);
rename("a.txt", "b.txt");
mkdir()
O mkdir() cria uma diretoria.
int mkdir(const char *pathname, mode_t mode);
mkdir("docs", 0777);
rmdir()
O rmdir() remove uma diretoria vazia.
int rmdir(const char *pathname);
rmdir("docs");
Resumo
System Call |
Função |
|---|---|
open() |
Abrir ficheiro |
read() |
Ler ficheiro |
write() |
Escrever ficheiro |
close() |
Fechar ficheiro |
lseek() |
Mover cursor no ficheiro |
unlink() |
Apagar ficheiro |
rename() |
Renomear ficheiro |
mkdir() |
Criar diretoria |
rmdir() |
Remover diretoria |