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 :
- if(pipe(fd) < 0) return 0;
- switch (fork()) {
- case -1:
- return 0;
- break;
- case 0:
- if(close(1) < 0) return 0;
- if(dup(fd[1]) < 0) return 0;
- execlp("uname", "uname", "-n", NULL);
- break;
- default:
- wait(NULL);
- while (read(fd[0], buf, BUFSIZ) != 0 && fd[0]) {
- ...
- }
- }
|
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 ...))
Message édité par Deadog le 31-03-2003 à 22:20:05