Ola. Non capisco come mai il seguente programma non funzioni ma si blocchi dopo aver stampato il 2° printf (2 - Processo padre iniziato e in attesa). La mia opinione è che il segnale SIGCONT nella kill può (e viene) ignorato... Come posso forzare il figlio a ripartire?
codice:#include <errno.h> /* error definitions and routines */ #include <stdlib.h> /* C standard library */ #include <unistd.h> /* unix standard library */ #include <stdio.h> /* standard I/O library */ #include <string.h> /* string functions */ #include <sys/types.h> #include <sys/wait.h> #include </usr/include/signal.h> /* funzioni per i segnali*/ main (int argc, char *argv[]) { int i, j, status; pid_t pid; unsigned long a; pid = fork (); if (!pid) { printf ("1 - Processo figlio in pausa\n"); pause(); printf ("3 - Processo figlio ripreso\n"); printf ("4 - Processo figlio terminato. Torno al padre\n"); exit(0); } else { printf ("2 - Processo padre iniziato e in attesa\n"); sleep(2); kill(pid, SIGCONT); wait(NULL); printf ("5 - Processo padre terminato. Uscita\n"); } return 0; }

Rispondi quotando