thread

thread - C++ - Programmation

Marsh Posté le 22-07-2002 à 17:28:57    


J'ai un problème avec le programme ci-dessous depuis que j'ai rajouté un thread. Le pb, c'est que lorsque je lance le programme et que je fais
CTRL C, le message 1111111111 s'affiche, mais après je ne peux plus rien faire, j'ai plus la main.
Si qq'un pouvais m'aider...

Code :
  1. #include <signal.h>
  2. #include <stdio.h>
  3. void Traiter_Signaux(int numero)
  4. {
  5. switch(numero){
  6.  case SIGINT:  puts("1111111111111" );
  7.     exit(0);
  8.     break;
  9.  case SIGQUIT:  puts("222222222222" );
  10.     exit(0);
  11.     break;
  12. }
  13. }
  14. void * thread_1 (void * numero)
  15. {
  16. while(1);
  17. }
  18. int main(void)
  19. {
  20. pthread_t thread [5];
  21. struct sigaction action;
  22. int ret;
  23. int i;
  24. action.sa_handler=Traiter_Signaux;
  25. sigemptyset(&(action.sa_mask));
  26. action.sa_flags=0;
  27. if(sigaction(SIGQUIT,&action,NULL)!=0){
  28.  perror("sigaction quit" );
  29.  exit(1);
  30. }
  31. if(sigaction(SIGINT,&action,NULL)!=0){
  32.  perror("sigaction int" );
  33.  exit(1);
  34. }
  35. if ((ret = pthread_create (& thread [0], NULL, thread_1, (void *) i)) != 0) {
  36.  fprintf (stderr, "%s", strerror (ret));
  37.  exit (1);
  38. }
  39. while(1);
  40. return(0);
  41. }

Reply

Marsh Posté le 22-07-2002 à 17:28:57   

Reply

Marsh Posté le 22-07-2002 à 19:02:13    

Gaspard a écrit a écrit :

 
J'ai un problème avec le programme ci-dessous depuis que j'ai rajouté un thread. Le pb, c'est que lorsque je lance le programme et que je fais
CTRL C, le message 1111111111 s'affiche, mais après je ne peux plus rien faire, j'ai plus la main.
Si qq'un pouvais m'aider...


Ouh là là, mon pauvre ami, les threads et les signaux, c'est la merde totale. L'implémentation Linux fait n'importe quoi, et même l'implémentation Solaris n'est pas complètement conforme à la norme.
 
Donc pour l'instant, si on veut faire mumuse avec signaux et threads, on peut :
- ne pas le faire,
- utiliser GNU Pth mais c'est plus lent,
- attendre l'implémentation PthreadsNG, qui devrait enfin apporter la conformité à POSIX.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 23-07-2002 à 08:38:26    

:(

Reply

Marsh Posté le 23-07-2002 à 09:41:43    

GNU Pth : http://www.gnu.org/software/pth/
 
NG-PThreads : http://oss.software.ibm.com/develo [...] /pthreads/
(par contre il faut patcher le noyau)


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 23-07-2002 à 09:43:45    

:) Merci Jar Jar, je vais essayer de me débrouiller avec ce que tu m'as indiqué

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed