IMP. Os seus programas deverão usar as chamadas ao sistema para acesso a ficheiros e não as funções de manipulação de streams da biblioteca C.
No final o seu programa deverá imprimir o comprimento total do ficheiro. (Confirme o resultado usando o comando wc -c.)
IMP Para garantir que a chamada ao sistema read tem que ser invocada múltiplas vezes use buffers de tamanho reduzido, p.ex. 256 bytes, e teste os seus programas com o código C respectivo.
IMP. O seu programa deverá assinalar erro se o segundo argumento for o nome dum ficheiro que já existe.
Confirme o resultado do seu programa usando o comando diff.
Sugestão Leia as Secções 2.1 e 2.3 das notas do Prof. Pimenta Monteiro sobre ficheiros, bem como as man pages das chamadas ao sistema nelas descritas.
Escreva o programa merge o qual reconstrói um ficheiro a partir dos ficheiros gerados por split. Assume-se que estes ficheiros se encontram no directório onde merge é invocado.
merge deve ser invocado da seguinte maneira:
merge <prefix>
Onde
<prefix>
é o prefixo usado como argumento desplit
.
O nome do ficheiro criado por merge
deverá ser <prefix>mrg
.
Sugestão: Use as funções de manipulação de strings da biblioteca C (man 3 string).
typedef char nome[30]; typedef struct { nome al; int notas[3]; } teste_t;
teste_t
, i.e. as classificações
num teste com 3 perguntas. Os campos de cada registo deverão ser
perguntados ao utilizador. O seu programa deverá tomar como
argumento o nome do ficheiro, o qual já pode existir.
sample
o qual “amostra” um ficheiro.Este programa deve ser invocado da seguinte forma:
sample <filename> <offset>
onde
<filename>
é o nome do ficheiro a amostrar;
<offset>
é o deslocamento em relação ao princípio do ficheiro da amostra.
O tamanho da amostra deve ser igual a um décimo do comprimento do
ficheiro amostrado, a menos que o deslocamento especificado determine
um valor inferior. A amostra deve ser escrita num ficheiro cujo nome é
<filename>.smpl
.
Sugestão Para determinar o tamanho do ficheiro poderá
usar uma das chamadas ao sistema stat()
, fstat()
ou
lstat()
. Leia a sua man page bem como as páginas 13 e 14 da Secção 2.5 das notas do Prof. Pimenta Monteiro sobre ficheiros
Sugestão Para avançar o cursor do ficheiro poderá usar a
chamada ao sistema lseek
. Leia a sua man page bem como a sua descrição na Secção 2.3 das notas do Prof. Pimenta Monteiro sobre ficheiros
IMPORTANTE A sua solução tem que usar a chamada ao sistema dup2()
. Leia a sua man page bem como a Secção 2.1 das notas do Prof. Pimenta Monteiro sobre ficheiros
This document was translated from LATEX by HEVEA.