Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void hand(int par);
int main()
{
pid_t pid1,pid2;
pid1=fork();
char str[5];
char str2[5];
char str3[5];
sprintf(str3,"%d",getpid());
if(pid1==0) //figlio 1
{
sprintf(str,"%d",getpid());
execl("EX2",&str,&str3,NULL);
}
else //padre
{
pid2=fork();
if(pid2==0) //figlio 2
{
sleep(1);
sprintf(str2,"%d",getpid());
execl("EX2",&str2,&str3,NULL);
}
else //padre
{
printf("sono qui\n");
signal(SIGUSR1,hand);
pause();
printf("ma qui no\n");
}
}
}
void hand(int par)
{
int i=1;
if(par==SIGUSR1)
{
printf("(%d) ho ricevuto il segnale SIGUSR1",i);
i++;
}
}
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h> //serve per pid_t
#include <signal.h>
int main(int argc, char *argv[])
{
pid_t processo=atoi(argv[0]);
pid_t padre=(argv[1]);
sleep(3);
kill(padre,SIGUSR1);
printf("sono il processo %d e sto mandando il segnale SIGUSR1\n",processo);
}