Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[HS] kill d'un processus

5 réponses
Avatar
Frederic Beck
Salut a tous

J'ai une appli qui tourne et qui cr=E9=E9 des fils avec la fonction fork.

A la fin de ces fils, je fais un exit pour tuer ces processus. Le
probleme, c'est que les processus ne se tuent pas :-/

Ils sont toujours present avec le flag Z (si je fais ps axf)

Quand j'essaie de les tuer, pas moyen, quel que soit le signal utilis=E9
ils sont toujours presents, jusqu'a ce que le pere soit stopp=E9...

Qq'un a une id=E9e de comment faire pour que ces processus disparaissent ?

Merci d'avance
Fred

5 réponses

Avatar
François Boisson
Le Mon, 23 May 2005 17:00:45 +0200
Frederic Beck a écrit:

Salut a tous

J'ai une appli qui tourne et qui créé des fils avec la fonction fork.

A la fin de ces fils, je fais un exit pour tuer ces processus. Le
probleme, c'est que les processus ne se tuent pas :-/

Ils sont toujours present avec le flag Z (si je fais ps axf)

Quand j'essaie de les tuer, pas moyen, quel que soit le signal utilisé
ils sont toujours presents, jusqu'a ce que le pere soit stoppé...

Qq'un a une idée de comment faire pour que ces processus disparaissent
?



Ils sont zombis, ils sont morts mais présents dans la table des
processus car le code de retour n'a pas été lu par le processus père. Il
faut faire un «ramasse miettes» i.e un processus qui lit les codes
retours des processus zombis ou revoir le programme à l'origine de ces
processus.


François Boisson


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
fra-duf-no-spam
Le 12926ième jour après Epoch,
Frederic Beck écrivait:

Salut a tous

J'ai une appli qui tourne et qui créé des fils avec la fonction
fork.



Je vais supposer pour la suite que c'est du C que tu fais.


A la fin de ces fils, je fais un exit pour tuer ces processus. Le
probleme, c'est que les processus ne se tuent pas :-/



Normal. man 2 exit

Ils sont toujours present avec le flag Z (si je fais ps axf)



Normal encore. Ils sont zombie, car leur père n'a pas réclamé de
certificat de décès.

Quand j'essaie de les tuer, pas moyen, quel que soit le signal utilisé
ils sont toujours presents, jusqu'a ce que le pere soit stoppé...



Ils ne sont plus vraiment là, donc intuables. Seule l'entrée dans la
table des process reste présente. Mais je comprends pas comment le
père peut être stoppé alors que tu fais un exit.

Qq'un a une idée de comment faire pour que ces processus
disparaissent ?



Oui.

man 2 fork
man 2 wait
man 2 signal
man 2 kill

Et le mieux, pour ce genre de question, ce sont les listes ou les
newsgroups spécialisés programmation, non?


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
David Dumortier
Le Mon May 23 2005 à 05:31:08PM +0200, François Boisson dit :
Le Mon, 23 May 2005 17:00:45 +0200
Frederic Beck a écrit:



[...]

Ils sont zombis, ils sont morts mais présents dans la table des
processus car le code de retour n'a pas été lu par le processus père. Il
faut faire un «ramasse miettes» i.e un processus qui lit les codes
retours des processus zombis ou revoir le programme à l'origine de ces
processus.



Rien à ajouter ... si ce n'est qu'il y a eu un fil sur cette même liste là
dessus sur cette même liste entre 18 et 6 mois pour les récupérer. Mais
j'ai comme un doute sur la possibilité de faire ça. Sinon init est le
processus parent de tout le monde et est sensé récupérer tout ça (c'est un
peu le Créateur :-) à intervalle régulier.

Je ne peux que t'encourager, comme tout le monde, à voir man 2 wait et
appeler la fonction correspondante dans ton langage.
<troll honteux>Ou à changer de langage, si il s'agit d'un langage à
ramasse-miettte</troll vraiment honteux>

François Boisson



Voili.
--
David Dumortier



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Frederic Beck
Hello

Merci pour ces precisions, je ne comprennais pas a quoi correspondait le
status 'Z', maintenant c bcp plus clair.

Du coup, lorsque le fils est fini j'envoie un signal au pere qui fait un
wait et donc plus de processus zombi :)

Merci pour vos reponses !
Fred


On Mon, 23 May 2005 17:58:32 +0200
Jean-Damien Durand wrote:

Soit dans le pere tu fais (pas recommende):

signal(SIGCHLD,SIG_IGN);

ou tu catche le signal SIGCHLD et tu boucles sur waitpid - n'oublie de
regarder la man page de waitpid()...

JD.

On Monday 23 May 2005 17:00, Frederic Beck wrote:
FB > si je fais ps axf

--
Jean-Damien Durand CERN/IT/FIO/DS - Geneva, Switzerland
PGP: http://home.cern.ch/~jdurand/public_key.asc
CERN CA: http://cern.ch/service-grid-ca/crt/root_crt.html
WWW: http://home.cern.ch/~jdurand




--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yannick Beynet
Pas besoin d'envoyer un signal, justement quand tu fais le exit dans
le fils, le kernel envoie le signal SIGCHLD au père.

Le 24/05/05, Frederic Beck a écrit :
Hello

Merci pour ces precisions, je ne comprennais pas a quoi correspondait le
status 'Z', maintenant c bcp plus clair.

Du coup, lorsque le fils est fini j'envoie un signal au pere qui fait un
wait et donc plus de processus zombi :)

Merci pour vos reponses !
Fred

On Mon, 23 May 2005 17:58:32 +0200
Jean-Damien Durand wrote:

> Soit dans le pere tu fais (pas recommende):
>
> signal(SIGCHLD,SIG_IGN);
>
> ou tu catche le signal SIGCHLD et tu boucles sur waitpid - n'oublie de
> regarder la man page de waitpid()...
>
> JD.
>
> On Monday 23 May 2005 17:00, Frederic Beck wrote:
> FB > si je fais ps axf
>
> --
> Jean-Damien Durand CERN/IT/FIO/DS - Geneva, Switzerland
> PGP: http://home.cern.ch/~jdurand/public_key.asc
> CERN CA: http://cern.ch/service-grid-ca/crt/root_crt.html
> WWW: http://home.cern.ch/~jdurand

--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact .org