Gestion des processus Unix
Résolu
don8
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
indigène_du_net -
indigène_du_net -
Bonjour à tous,
J'aimerai savoir s'il y a moyen de créer un arbre filiforme des processus, en demandant à l'utilisateur le nombre de processus descendant du père. Par exemple, si ce nombre vaut 2, le père aura un fils et un petit fils; si c'est 3, alors le père aura un fils, un petit-fils et le fils de son petit-fils.
Merci
J'aimerai savoir s'il y a moyen de créer un arbre filiforme des processus, en demandant à l'utilisateur le nombre de processus descendant du père. Par exemple, si ce nombre vaut 2, le père aura un fils et un petit fils; si c'est 3, alors le père aura un fils, un petit-fils et le fils de son petit-fils.
Merci
A voir également:
- Gestion des processus Unix
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
- Gestion des fichiers - Télécharger - Gestion de fichiers
- Gestion autorisation application android - Guide
- Logiciel gestion cabinet médical gratuit - Télécharger - Organisation
2 réponses
Bonjour
je ne pense pas que la primitive wait() (sauf erreur de ma part) puisse éviter des zombies car elle suspend l'exécution du processus appelant jusqu'à ce que l'un de ses fils se termine mais ici en a plusieurs fils donc il est préférable d'utiliser par précaution waitid() qui fournit un contrôle plus précis sur les changements d'états des fils que l'on attend / waitpid()
à bientôt
je ne pense pas que la primitive wait() (sauf erreur de ma part) puisse éviter des zombies car elle suspend l'exécution du processus appelant jusqu'à ce que l'un de ses fils se termine mais ici en a plusieurs fils donc il est préférable d'utiliser par précaution waitid() qui fournit un contrôle plus précis sur les changements d'états des fils que l'on attend / waitpid()
à bientôt
Salut,
Je pense qu'avec une boucle while et un fork cela devrait le faire genre :
C'est juste pour l'algo...maintenant faut mettre les parenthèses et les points virgules ^^
Je pense qu'avec une boucle while et un fork cela devrait le faire genre :
//init nbDeFils=3 while nbDeFils { // Creation d'un fils pidRes=fork() if pidRes == 0 // Le fils. nbDeFils--; else // Le pere nbDeFils = 0 fi } } //exit
C'est juste pour l'algo...maintenant faut mettre les parenthèses et les points virgules ^^
(Par contre si le père est déjà mort quand le fils se finit, le fils est temporairement adopté par un autre process (init) le temps de lire son code de retour...mais c'est pas la question ici).
La fonction wait() permet à un père d'attendre le premier fils qui meurt et de lire son code de retour.
Dans notre cas, un père n'a pas plus d'un fils donc wait() semble bien adapté à la situation.
Certes la primitive est peut-être adaptée mais ici il est question de créer 3 fils donc la manière la plus optimal est un contrôle sur le statut des fils qui suspend par la même occasion le père ( qui est en attente de la mort de tous ces fils en claire est largement mieux adapté ).
De plus le code sources ou le pseudo-algorithme que vous avez fourni ne répond pas à la question poser sur la création de 3 fils sauf erreure de ma part. Voici une version qui est répond au mieux à ce qui a été demandé; reste à l'optimiser voir corriger et l'adapter aux besoins et sauf erreur de ma part elle crée bien le nombre exact de fils contrairement à votre solution.
à bientôt
Désoler si je n'ai pas compris au départ mais n'empêche que l'algorithme donné ou à implémenter n'est pas correct. Si l'on continue sur la lancer de l'algo à mon avis en crée beaucoup trop de fils parce que chaque père recrée des fils à chaque tour de la boucle while et non X processus souhaiter de plus en obtient pas une structure en arbre souhaité. Il ne suffit pas que de mettre des parenthèses et des points virgule pour obtenir un arbres Si c'est pour avoir un arbre de filiforme de x processus alors le code se présentera sous cette forme
ou
à bientôt
D'abord merci pour tes remarques, c'est toujours intéressant de partager les points de vue ;)
Dans mon algo, le père ne recrée pas de fils à chaque boucle while ...ou alors un truc m'a échappé ;) (je bois pas mal de bières qd il fait chaud donc c'est pas impossible ^^)
Sinon je ne vois pas de différence entre mon algo (où il manquait le wait ...mais ça ne faisait pas partie de l'énoncé...I love zombie ^^) et ta dernière fonction à la différence près que tu utilises une boucle for et moi un while...
Ci-dessous mon algo dans une belle fonction :