Esta aula tem por objetivo introduzir as operações básicas de comunicação entre processos em ambientes Linux. Para tal, deverá implementar pequenos programas que respondam aos requisitos de cada uma das tarefas que se seguem. Para obter mais informação sobre as funções de sistema referidas, consulte as man-pages respetivas.
pipe()
,
write()
, read()
e close()
.
Linha 1 Linha 2 Linha 3 ... Linha 99 Linha 100O processo filho deve executar o programa
more
para
paginar no ecrã a sequência de linhas recebida do processo
pai. Como o paginador more
precisa de ter acesso
exclusivo ao terminal, o processo pai não deve terminar antes do
processo filho. Note que o processo pai deverá fechar a terminação
de escrita da pipe logo que termine de escrever todas as linhas,
caso contrário o processo filho nunca terminará.pipe()
, write()
,
dup2()
, execlp()
e close()
.
$./filtro infile.txt outfile.txt filtroA execução do programa deverá contemplar dois processos (um processo pai e um processo filho). O processo pai deverá abrir o primeiro ficheiro (passado como argumento) e executar o comando
cat
que deverá ter como canal de entrada o
ficheiro aberto. O processo filho deverá executar o
comando grep
para filtrar as linhas que contenham a
palavra filtro. O output do processo filho deverá ser
guardado no segundo ficheiro passado como argumento.pipe()
, open()
,
dup2()
, execlp()
e close()
.