NLK-511
06-07-2012, 20:37
Sto facendo un programmino stupido per un corso che sto seguendo in università, il programma deve creare un processo figlio, ricevere un SIGUSR1, mandare a sua volta unSIGUSR2 e poi terminarlo con un SIGTERM. Semplice no? Lo pensavo anche io fino a che non mi sono accorto che non funziona niente(o quasi) xD
sapete come aiutarmi?
#include<stdio.h>#include<stdlib.h>
#include<unistd.h>
#include<signal.h>
#include<sys/wait.h>
void handp(int signal);
void handc(int signal);
int PID;
int main(){
signal(SIGUSR1, handp);
if(fork()==0){
signal(SIGUSR2, handc);
signal(SIGTERM, SIG_DFL);
kill(getppid(), SIGUSR1);
printf("\nkill child executed");
PID=getpid();
exit(0);
}
wait(0);
printf("\n");
kill(PID,SIGUSR2);
kill(PID,SIGTERM);
printf("\nchild terminated");
}
void handp(int signal){
if(signal==SIGUSR1)
printf("\nParent received SIGUSR1");
return;
}
void handc(int signal){
if(signal==SIGUSR2)
printf("\nChild received SIGUSR2");
return;
}
sapete come aiutarmi?
#include<stdio.h>#include<stdlib.h>
#include<unistd.h>
#include<signal.h>
#include<sys/wait.h>
void handp(int signal);
void handc(int signal);
int PID;
int main(){
signal(SIGUSR1, handp);
if(fork()==0){
signal(SIGUSR2, handc);
signal(SIGTERM, SIG_DFL);
kill(getppid(), SIGUSR1);
printf("\nkill child executed");
PID=getpid();
exit(0);
}
wait(0);
printf("\n");
kill(PID,SIGUSR2);
kill(PID,SIGTERM);
printf("\nchild terminated");
}
void handp(int signal){
if(signal==SIGUSR1)
printf("\nParent received SIGUSR1");
return;
}
void handc(int signal){
if(signal==SIGUSR2)
printf("\nChild received SIGUSR2");
return;
}