Sisteme de operare‎ > ‎Laboratoare‎ > ‎

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.
ċ
semnale.c
(2k)
Dan Alexandru,
22 nov. 2009, 12:53