Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
6825 connectés 

  FORUM HardWare.fr
  Programmation
  C

  pthread Unix

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pthread Unix

n°1690234
Xtr3m01
Posté le 21-02-2008 à 15:50:47  profilanswer
 

Voilà je bosse actuellement sur un programme d'analyse de flux réseaux et je dois timer une action toute les 5 minutes...
C'est du C standard pas ++
J'avais une idée de comment coder ça mais dans un premier temps j'ai chercher s'il n'existait pas une API C qui permettait de faire de simple timer...
N'en n'ayant pas trouver je me suis repencher sur l'idée de j'avais au départ et qui consiste à faire des posix thread avec une boucle infinie et un sleep (time.h) de 5 minutes. Visiblement ça pourrait fonctionner j'ai fait un code pour tester est c'est fonctionnel... Seulement voilà, je suis un poil perfectionniste est j'ai décidé de surveiller l'utilisation CPU de mon processus père et là bizarrement y'a ecrit <defunct> et le processus est marqué zombie :X mais ce dernier fonctionne parfaitement...
 
Les 2 questions sont donc les suivantes:
- Connaissez vous une API dispo sous UNIX qui gère des timers ?
- Sinon qq'un pourrait t'il m'indiquer pourquoi le process est marqué defunct alors qu'il fonctionne parfaitement.
 
Info supplémentaires:
Machine: Debian Etch Kernel 2.6.18-6-686 livré de base avec la distro SMP of course.
Binaire compilé avec gcc 4.1 -o X X.c -lpthread
 
NB: Ok je sais si ca marche pourquoi je demande, ... Je suis perfectionniste alors si qq'un a une idée :/ faite le moi savoir merci d'avance :P  :hello:  

mood
Publicité
Posté le 21-02-2008 à 15:50:47  profilanswer
 

n°1690278
tpierron
Posté le 21-02-2008 à 17:22:39  profilanswer
 

Déjà avec du code (ou des extraits), ça serait plus simple.
 
Sinon l'état zombie (en général les processus fils) est l'état dans lequel se trouve un process tant qu'on a pas lu son code de retour. Je dis bien processus et non thread. On peut récupérer le status d'un processus fils terminé (donc dans l'état zombie) via les fonctions wait(), wait3(), wait4() ou waitpid(). Une fois le status récupérer, le processus disparaitra de la liste. On peut le faire aussi automatiquement en utilisant signal() : signal(SIG_CHILD, SIG_IGN).
 
Bon, là où ça devient bizarre c'est que tu parles de processus père (qui devrait être monitoré par le shell).
 
Bah, sinon pour faire des timers, tu peux utiliser select(), sleep(), usleep() ou nanosleep().

n°1690324
Xtr3m01
Posté le 21-02-2008 à 18:52:49  profilanswer
 

En fait j'ai trouver ma couille grâce à tes explications sur l'état zombie? D'une part je merite le bucher car j'ai pas compiler avec "-W -Wall" ce qui m'aurait mit sur la voie de mon probleme.
D'autre part mon binaire de test ne contient pas l'intégralité du code principale qui est une boucle de capture libpcap... Donc mon programme arrivait en fin de main sans valeur de retour... Continuait à fonctionner -> Zombie


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  pthread Unix

 

Sujets relatifs
attacher un compte unix a plusieurs groupedes remplacements dans des fichiers unix
[C Unix] Ecrire dans un fichier...[ shell UNIX ] redirection d'un resultat de tar
[Divers] Editeur / Unix / IDE + TabulationsREXX vers UNIX
executable UNIX[RESOLU] Comment faire un echo sans retour chariot sous unix ?
Modifier un pdf sous unix via un script ?Commande "source" sous UNIX OSX 10.4 : accents
Plus de sujets relatifs à : pthread Unix


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)