1. Defina o conceito de stream.
  2. Dê exemplos de dispositivos que gerem streams.
  3. Dê exemplos de dispositivos que consumam streams.
  4. Quais são os streams padrão de um processo?
  5. Quais os propósitos de cada stream padrão?
  6. Que tipo de dados streams de processos transportam?
  7. Escreva um programa (em sua linguagem de preferência) que leia do stream da entrada padrão uma sequência de números inteiros e produza no stream da saída padrão uma sequência com os valores multiplicados por 2. O stream da entrada deve ser lido até o fim. O programa deve também notificar o usuário, via stream padrão de erro, sempre que um número negativo for lido, imprimindo a mensagem AVISO: valor negativo (N) (onde N é o valor negativo lido).
  8. Explique o que são pipeline e pipe?
  9. Qual a diferença entre pipes e redirecionamentos?
  10. O que quer dizer que um pipe é bufferizado?
  11. Escreva um pipeline usando seu programa acima para compor um “sistema” que leia um stream de inteiros e produza um stream dos mesmos valores multiplicados por 8.
  12. Reescreva o pipeline acima para que os dados sejam lidos de um arquivo de texto, contendo os números e para que o resultado final seja armazenado no arquivo vezes8.txt.
  13. Faça uma pesquisa na internet sobre a sintaxe de redirecionamento do stream da saída padrão de erro (lembre que é preciso saber a sintaxe específica para o seu shell). Escreva um pipeline com o programa que você criou que redirecione a saída padrão de erro para o arquivo ‘erros.txt’. A saída padrão normal deve ser direcionada para o terminal, normalmente.
  14. Escreva um pipeline, usando apenas ferramentas Unix de linha de comando, que conte quantos arquivos há nos diretórios de sua conta que tenham a extensão .java (ou qualquer outra extensão).