devi creare una funzione per gestire il cont
codice:
void trap(int sig) { /* non fa niente */ }
e prima del fork aggiungere:
signal(SIGCONT, trap);
ora puoi usare
kill(getpid(), SIGSTOP);
al posto di pause()
ma rischieresti che arrivi prima il SIGCONT al padre
prima che il figlio faccia un SIGSTOP
googlando ho trovato questo esempio che utilizza SIGUSR1
codice:
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void trap(int sig) { /* do nothing */ }
int main()
{
int pid;
signal(SIGUSR1, trap);
switch (pid = fork())
{
case 0:
pause();
puts("Child: received signal, exiting");
break;
case -1:
perror("fork");
return 1;
default:
puts("Parent: sleeping...");
sleep(5);
puts("Parent: sending signal");
kill(pid, SIGUSR1);
wait(0);
puts("Parent: child exited");
}
return 0;
}