Sinais


  1. 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.
  2. 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]
  3. 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".
  4. 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]
  5. Crie um programa que simule a função sleep(n).
  6. 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
HTML Válido