[ Thread Index |
Date Index
| More lists.tuxfamily.org/cllfst Archives
]
- To: CULLT@xxxxxxxxxxxxxxxx, cllfst@xxxxxxxxxxxxxxxxxxx
- Subject: [cllfst] sigaux
- From: "zaki jenhani" <zakjen@xxxxxxxxx>
- Date: Tue, 8 May 2007 01:19:32 +0200
- Dkim-signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type; b=faylLdnrIBIEENtmXvDJkqQX90Q9/5ehK1cqD+FSRqOUa4otKyFooCt/GPglAqdg+Rvv/CTUJNUI75laTMKDBrfzCmiYkjjphTS4YYvRFMgsK3Ggq86AIzhYL6vZKz5qjdg67DTb1uqX94BP0aC9MpR7WcK9FyHomUZQmhCkcqw=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type; b=LBE7tS+3FNltMNGB4eJdXgFSDZ8T0sm3crG/oCdbiZ8ALO11eOAvSeim8vt4JswhZZZ1CGmxYmoYA/CCoTigA37/KU1L6AoXa+el+oIRFWzPr0fIUIFloNzzPfZoyrqGmwDEbFz8TYHaRgWkP8j+TOfFXqPFWZfvdmA1KdAJDDc=
J'ai trouvé un problème lorsque je developpais un petit programme en C où j'utilise des signaux. J'ai rencontré un problème que je n'arrive pas à le résoudre. Le problème est que le père envoi un signal (SIGUSR1) à son fils, qui n'a jamais pu le detecter.
Est-ce que quelqu'un peut detecter où est le problème?
////////////////////////////DEBUT CODE///////////////////////
#include <
stdio.h>
#include <signal.h>
void f()
{
/*
* f est la fonction du traitement du signal SIGUSR1 quand le fils le recevra
*/
printf("le signal est receptionné(%d)\n",getpid());
signal(SIGUSR1,f);
}
int main()
{
int pid; //Pour y mettre le pid du fils
if (pid=fork())
{
/*
* Le bloc du père
*/
printf("(%d) je suis le père\n",getpid());
sleep(1); //Pause necessaire pour s'assurer que le fils sera pret pour recevoir et traiter le signal
kill(SIGUSR1,pid); //Envoi du signal SIGUSR1 au fils
}
else
{
/*
* Le bloc du fils
*/
signal(SIGUSR1,f); //Associe le traitement f() au signal SIGUSR1 qaund il sera reçu
printf("(%d) fils de (%d)\n",getpid(),getppid());
pause(); //Bloque le fils jusqu'ç ce qu'il reçoit un signal
}
return 0;
}
////////////////////FIN CODE//////////////////////////
Le code est en piece jointe assi avec ce mail.
#include <stdio.h>
#include <signal.h>
void f()
{
/*
* f est la fonction du traitement du signal SIGUSR1 quand le fils le recevra
*/
printf("le signal est receptionné(%d)\n",getpid());
signal(SIGUSR1,f);
}
int main()
{
int pid; //Pour y mettre le pid du fils
if (pid=fork())
{
/*
* Le bloc du père
*/
printf("(%d) je suis le père\n",getpid());
sleep(1); //Pause necessaire pour s'assurer que le fils sera pret pour recevoir et traiter le signal
kill(SIGUSR1,pid); //Envoi du signal SIGUSR1 au fils
}
else
{
/*
* Le bloc du fils
*/
signal(SIGUSR1,f); //Associe le traitement f() au signal SIGUSR1 qaund il sera reçu
printf("(%d) fils de (%d)\n",getpid(),getppid());
pause(); //Bloque le fils jusqu'ç ce qu'il reçoit un signal
}
return 0;
}