Compartilhar anúncio

Exercicio de programaçao em Llinguagem C

Busco professor de Programação

Métodos:

Online

1. EXERCICIO:

Escreva um programa em linguagem C padrão, de nome gsn.c, que gera e ordena uma lista de n bytes aleatórios e imprime a lista em decimal na saída padrão. Para efetuar este processamento, o programa deve utilizar a metodologia “original” que a seguir se descreve.

- O número de bytes n da lista é o único argumento do programa na linha de comandos.

- O programa deve testar se o número de argumentos dado na linha de comandos é correto e se n 0. Em caso de erro deve emitir uma mensagem e terminar.

- O programa gsn (processo A) executa a sua tarefa em 3 passos distintos criando 3 novos processos denominados B, C e D, um de cada vez, com recurso à função de sistema fork() e substituindo a sua imagem respetivamente pela dos comandos head, hexdump e sort (usualmente localizados na diretoria /bin). Os 3 passos são equivalentes à execução dos seguintes 3 comandos na linha de comandos (shell):

 $ head -c NNN /dev/urandom tmp.bin # Passo 1
 $ hexdump -v -e "/1 \"%d\\n\"" tmp.bin tmp.txt
# Passo 2
 $ sort -g tmp.txt # Passo 3

onde $ representa a prompt da linha de commandos, # representa um comentário, é o operador de redireção da saída padrão (stdout). O operador redireciona e cria um ficheiro. O operador redireciona a entrada padrão (stdin).

- O comando head lista os primeiros NNN bytes do ficheiro especial /dev/urandom gerador de bytes aleatórios para o ficheiro tmp.bin. O comando hexdump lista em decimal os bytes do ficheiro tmp.bin para o ficheiro tmp.txt. Finalmente, o comando sort ordena os números (linhas) de tmp.txt segundo um critério numérico.

- Tenha em conta que a string de formatação do comando head, quer para a shell quer em linguagem C, deve ser escrita como "/1 \"%d\\n\"" devido ao significado especial dos carateres " e \ no interior da string, necessitando de ser precedidos pelo caracter \ (procedimento em inglês designado por escaped characters) para anular o seu significado especial.

- Para o passo 1, por exemplo, o programa gsn (processo A) deve gerar uma lista de bytes constituída pelo ficheiro binário "tmp.bin", criando um novo processo (processo B) que substitui a sua imagem pela do comando head e o executa com as opções "-c" e "NNN", onde NNN significa o valor de n dado como argumento ao programa. Dica: antes da substituição da imagem, redirecionar a saída padrão stdout para o ficheiro "tmp.bin" usando a função de biblioteca
Contate sem compromisso
Elisa Maria Silva

Elisa Maria Silva

Dados de contato válidos

Alertas gratuitos em seu e-mail

Receba alunos ou ofertas de trabalho como professor de Programação em Minas Gerais

Eu aceito o aviso legal e de privacidade

Compartilhe este anúncio ou envie-o por e-mail