Advertisement
AJBF

Señales EJEMPLO PAGINA

May 4th, 2015
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. /*
  2. * Javier Abellán. 8 de Abril de 2003
  3. *
  4. * Ejemplo de como una proceso puede enviar una señal a otro proceso mediante
  5. * kill()
  6. */
  7. #include <sys/types.h>
  8. #include <signal.h>
  9. #include <unistd.h>
  10.  
  11. /* Prototipo de la función para tratamiento de la señal */
  12. void trataSenhal (int);
  13.  
  14.  
  15. /* Programa principal.
  16. * Crea un proceso hijo y le envía una señal SIGUSR1 cada segundo.
  17. */
  18. main()
  19. {
  20. /* Identificador del proceso hijo */
  21. pid_t idProceso;
  22.  
  23. /* Se crea el proceso hijo y se comprueba el error */
  24. idProceso = fork();
  25.  
  26. if (idProceso == -1)
  27. {
  28. perror ("No se puede lanzar proceso");
  29. exit (-1);
  30. }
  31.  
  32. /* Camino que sigue el proceso hijo.
  33. * Pone trataSenhal() para tratar la señal SIGUSR1 y se mete en un bucle
  34. * de espera
  35. */
  36. if (idProceso == 0)
  37. {
  38. signal (SIGUSR1, trataSenhal);
  39. while (1)
  40. pause ();
  41. }
  42.  
  43. /* Camino que sigue el proceso padre.
  44. * Cada segundo envía una señal SIGUSR1 a su proceso hijo.
  45. */
  46. if (idProceso > 0)
  47. {
  48. while (1)
  49. {
  50. sleep (1);
  51. kill (idProceso, SIGUSR1);
  52. }
  53. }
  54. }
  55.  
  56. /* Función de tratamiento de SIGUSR1.
  57. * Escribe en pantalla un aviso de que ha llegado la señal.
  58. */
  59. void trataSenhal (int numeroSenhal)
  60. {
  61. printf ("Recibida señal del padre\n");
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement