Procese 2: comunicare prin semnale

1. Studiaţi şi rulaţi exemplul de mai jos:

#include <unistd.h> #include <stdio.h> #include <signal.h> void handler(int sig) { printf("CTRL-C\n"); (void) signal(SIGINT, handler); } void main(void) { (void) signal(SIGINT, handler); while (1) { printf("Hello World!\n"); sleep(1); } }

2. Modificaţi problema de la Procese 1 astfel:

  • se vor crea 3 procese (1 părinte + 2 fii);
  • procesele fiu încep afişarea unul de la 0 iar celălalt de la 9, procesul părinte va afişa litere;
  • la fiecare secundă procesul părinte trimite proceselor fiu un semnal (ex. SIGUSR1) ce va determina incrementarea/decrementarea valorii afişate de respectivul proces fiu (9 – decrementare, 0 - incrementare);
  • Dupa 5 secunde de la începerea rulării, procesul părinte încheie execuţia fiilor, le preia starea şi își încheie la rândul lui execuţia.