Exercícios — File Descriptors em C ================================== **Exercício 1** Considere o código: .. code-block:: c 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: .. code-block:: c int fd = open("notas.txt", ____________); -------------------------------------------------- **Exercício 6** Complete o código para fechar corretamente um ficheiro: .. code-block:: c ____________(fd); -------------------------------------------------- **Exercício 7** Indique se é Verdadeiro ou Falso: 1. stdin corresponde ao file descriptor 0 2. stdout corresponde ao file descriptor 2 3. stderr corresponde ao file descriptor 2 4. open() devolve um file descriptor 5. read() pode funcionar sem file descriptor -------------------------------------------------- **Exercício 8** Observe o código: .. code-block:: c 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: .. code-block:: c int fd1 = open("a.txt", O_RDONLY); int fd2 = open("b.txt", O_RDONLY); Responda: 1. fd1 e fd2 terão obrigatoriamente o mesmo valor? 2. Porque razão? 3. Qual será normalmente o valor de fd1?