Exercícios — File Descriptors em C
Exercício 1
Considere o código:
int fd = open("dados.txt", O_RDONLY);
O que representa a variável fd?
Exercício 2
Quais são os três file descriptors padrão existentes em sistemas UNIX/Linux?
Indique o número e a função de cada um.
Exercício 3
Explique porque o valor devolvido por open() deve ser sempre verificado.
Exercício 4
O que acontece se esquecermos de usar close(fd) após abrir um ficheiro?
Exercício 5
Complete o código para abrir um ficheiro apenas para leitura:
int fd = open("notas.txt", ____________);
Exercício 6
Complete o código para fechar corretamente um ficheiro:
____________(fd);
Exercício 7
Indique se é Verdadeiro ou Falso:
stdin corresponde ao file descriptor 0
stdout corresponde ao file descriptor 2
stderr corresponde ao file descriptor 2
open() devolve um file descriptor
read() pode funcionar sem file descriptor
Exercício 8
Observe o código:
int fd = open("teste.txt", O_WRONLY);
write(fd, "ABC", 3);
Explique o que este programa faz.
Exercício 9
Explique a diferença entre:
nome do ficheiro
file descriptor
Exercício 10
Porque normalmente o primeiro ficheiro aberto por um programa recebe o valor 3 como file descriptor?
Exercício 11
Escreva um pequeno programa em C que:
abra um ficheiro chamado exemplo.txt
verifique se houve erro
feche o ficheiro corretamente
Exercício Extra — Interpretação
Considere:
int fd1 = open("a.txt", O_RDONLY);
int fd2 = open("b.txt", O_RDONLY);
Responda:
fd1 e fd2 terão obrigatoriamente o mesmo valor?
Porque razão?
Qual será normalmente o valor de fd1?