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

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