Faire marcher pipe et fork conjointement ? [C/C++] - C++ - Programmation
Marsh Posté le 30-03-2003 à 18:09:51
1 : tu fais un dup de stdout (1).
2 : tu le ferme
3 : tu ouvres le pipe (les premiers descripteurs de fichiers libres sont utilisés).
4 : tu forke.
4.1 (dans le fork) tu fais un gros exec
4.2 (dans le pere) tu lis dans le pipe.
de mémoire.
Marsh Posté le 30-03-2003 à 18:53:23
ben c'est pour ça que je conseille le man, par ce que je vois pas pourquoi ça boufferai plus de ressources. popen n'a rien de magique, c'est un mix de toutes les fonctions décrites
et je vois pas ce que ca veut dire bouffer des ressources. j'en utilise tous le temps et le temps d'exécution et de récupération est tout à fait minime. les ralentissement que tu observes viennent de l'executable que tu lance, pas de popen
Marsh Posté le 30-03-2003 à 18:57:06
popen utilise sh en plus
et je veux essayé si par moi même c plus rapide ou pas
kan à l'utilisation de ressource je le vois bien !! j'ai essayé sans popen (sans faire d'opération du tout à ce niveau la) et l'utilisatoin cpu a fortement baissé (faut dire ke ça fait des "boucle" sur le popen)
Marsh Posté le 31-03-2003 à 22:16:56
bon, j'ai réussi
mici lorill, mais ce ke tu m'a donner était pas dans le bon sens m'enfin, j'ai pu chercher kan même
j'ai fait :
1-ouvrir le pipe
2-fork
3.fils-fermer stdout
4.fils-dup de stdout
3.père-attendre
4.père-lire
voila ce ke j'ai fait :
Code :
|
le gain est faible, mais non négligeable puisque dans mes test j'en fais moins ke lors de son utilisation réel
ça m'a permit de passer de 20% d'utilisation cpu à 9-10 % ^^ (en faite, ct surtout enchainé les pipe dans le popen ki bouffer ! (avec les grep, cut, etc ...))
Marsh Posté le 31-03-2003 à 22:19:46
j'ai oublié :
est-ce ke j'ai besoin de "rebrancher" le stdout après pour retrouver une utilisation normal ?
Marsh Posté le 30-03-2003 à 16:32:11
voila, j'arrive pas à saisir comment faire marcher pipe avec fork
mon but est d'éxécuter un prog, attendre ke ce prog ai fini pour reprendre la main et surtout, récupérer la sortie standard du prog lancé !
j'ai essaye popen, ça marche bien mais ça bouffe trop de ressource cpu (j'ai besoin de faire cela très régulièrement)
Message édité par Deadog le 30-03-2003 à 16:32:33