Sinais
- Crie um programa que calcule o factorial de um número. Durante
o cálculo do factorial o programa deverá estar imune ao sinal
enviado pela combinação de teclas CTRL+C. Nota: Use o sleep(n)
para testar o programa.
- Crie um programa que quando recebe um sinal SIGUSR1 imprime "Recebi
um SIGUSR1" e quando recebe um sinal SIGUSR2 imprime "Recebi um SIGUSR2
". Experimente colocar o programa em background e enviar sinais recorrendo
ao comando kill. Por exemplo, kill -USR1 numero_processo.
[Resolução]
- Faça um programa que cria um processo filho. O filho deve esperar
n segundos e enviar um sinal ao pai. O pai deve começar
por escrever "Estou à espera de um sinal de alarme...." e quando
receber o sinal deve escrever "Recebi o sinal de alarme".
- Crie um programa que crie um processo filho para executar um comando
que lhe é dado pela linha de comandos. Quando o comando supera
n segundos de execução o pai deve imprimir "Comando excedeu
o tempo máximo de execução!" e matar o filho.
[Resolução]
- Crie um programa que simule a função sleep(n).
- Crie um programa que crie 4 filhos para pesquisar um vector de inteiros
com 200 posições. Cada um dos filhos pesquisa 50 posições.
Um processo que encontre o valor a pesquisar "retorna" o seu índice
(1..4). Um processo que não encontre o valor "retorna" 0. No fim o
processo pai deve indicar em que processos (1..4) é que foi encontrado
o número e deve matá-los.
[Resolução]
Complementos de Programação - ISEP2003