Thread & Fork [Résolu]

Messages postés
25
Date d'inscription
dimanche 31 octobre 2010
Dernière intervention
18 janvier 2014
- - Dernière réponse : theGrimReaper
Messages postés
25
Date d'inscription
dimanche 31 octobre 2010
Dernière intervention
18 janvier 2014
- 10 janv. 2014 à 17:34
Bonjour,

Une autre question de compréhension :
Est-ce que si le processus parent d'un (ou pluseurs threads) ce termine, il tue les fils automatiquement ?

Parce que je sais que pour les forks cela ne marche pas comme ça, vu que les fils sont créés dans un processus différent du père et donc s'il ce termine, les fils se termine pas forcément.
Mais pour le thread c'est un et un seul même processus, d'où ma question...

Je préfère savoir pour éviter les fuites mémoires.
[Question de propreté de codage.]

Merci d'avance.
Afficher la suite 

Votre réponse

2 réponses

Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 novembre 2018
0
Merci
Bonjour.

Je vais parler des type Unix que je maîtrise.
Sous Unix, tuer un processus, tue aussi ses threads, mais pas les sous processus (fork).

Mini hors-sujet:

Tu peux le vérifier aisément en utilisant "htop". C'est utilitaire du terminal qui te permet de graphiquement voir tes programmes, voir les sous processus (touche "t"), tuer des processus ("k" puis "9" puis "entrée"), voir les threads d'un processus ("maj" "H"). Filtre par ton nom d'utilisateur pour mieux voir ("u" puis tu sélectionnes ton nom).

Pour gérer le kill des sous process, il faut que le binaire "papa" le gère lui même. Par exemple en shell on utilise généralement:
#!/bin/bash

# Créer 5 sous processus infini. Le "Ctrl + C" est "attrapé"
# et tue les fils (via kill 0 qui veut dire "tuer les fils").

finish()
{
    echo "Sigterm detected, cleaning process..."
    kill 0
}

trap finish SIGINT

for i in 1 2 3 4 5; do
   yes &
done
wait


En C++, on utiliserait soit "waitpid" et "kill" pour faire la même chose, soit boost::asio ou boost::interprocess.

Si tu as besoin de lancer des processus, tu peux regarder ma classe de gestion de processus qui t'épargnes les prises de têtes avec les forks, dup et pipe: http://codes-sources.commentcamarche.net/source/54458-classe-de-gestion-de-processus

__________________________________________________________________________________________________
Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
Messages postés
25
Date d'inscription
dimanche 31 octobre 2010
Dernière intervention
18 janvier 2014
0
Merci
Parfait cptpingu.
Très complet et tu as répondu au doute que j'avais.
Merci bien.
Commenter la réponse de theGrimReaper

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.