Je cherche a savoir s'il est possible d'ouvrir un pipe a la fois en
lecture et en ecriture ? Ce que je voudrais, c'est faire un truc du
genre :
open(FILTRE, '| monprogramme |');
while (<>) {
print FILTRE, $_;
my $result = <FILTRE>;
print STDOUT, $result;
}
J'ai simplifie un peu mais l'idee est que je voudrais donner des lignes
une par une a mon programme et lire la sortie au fur et a mesure (parce
que la sortie du programme pour chaque ligne influence les lignes
suivantes en entree).
Si quelqu'un sait faire ca, je lui serais tres reconnaissant.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Gaborit
À (at) Fri, 05 Nov 2004 16:11:04 GMT, Winston Smith écrivait (wrote):
Je cherche a savoir s'il est possible d'ouvrir un pipe a la fois en lecture et en ecriture ?
Ce n'est pas facile à gérer (en gros si on ne sait pas faire d'écriture non bloquante, il y un risque de tomber sur un interblocage si on ne maîtrise pas le fonctionnement du soft en face). Ce n'est donc pas prévu par défaut en Perl.
Ce que je voudrais, c'est faire un truc du genre :
open(FILTRE, '| monprogramme |'); while (<>) { print FILTRE, $_; my $result = <FILTRE>; print STDOUT, $result; }
J'ai simplifie un peu mais l'idee est que je voudrais donner des lignes une par une a mon programme et lire la sortie au fur et a mesure (parce que la sortie du programme pour chaque ligne influence les lignes suivantes en entree).
Lisez 'perlipc' :
perldoc perlipc
ou (en français pour perl 5.6.0) :
<http://www.enstimac.fr/Perl/DocFr/perlipc.html>
en particulier la partie sur les communications bi-directionnelles.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Fri, 05 Nov 2004 16:11:04 GMT,
Winston Smith <winston_smith@linuxmail.org> écrivait (wrote):
Je cherche a savoir s'il est possible d'ouvrir un pipe a la fois en lecture et
en ecriture ?
Ce n'est pas facile à gérer (en gros si on ne sait pas faire d'écriture non
bloquante, il y un risque de tomber sur un interblocage si on ne maîtrise pas
le fonctionnement du soft en face). Ce n'est donc pas prévu par défaut en
Perl.
Ce que je voudrais, c'est faire un truc du
genre :
open(FILTRE, '| monprogramme |');
while (<>) {
print FILTRE, $_;
my $result = <FILTRE>;
print STDOUT, $result;
}
J'ai simplifie un peu mais l'idee est que je voudrais donner des lignes une
par une a mon programme et lire la sortie au fur et a mesure (parce que la
sortie du programme pour chaque ligne influence les lignes suivantes en
entree).
Lisez 'perlipc' :
perldoc perlipc
ou (en français pour perl 5.6.0) :
<http://www.enstimac.fr/Perl/DocFr/perlipc.html>
en particulier la partie sur les communications bi-directionnelles.
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Fri, 05 Nov 2004 16:11:04 GMT, Winston Smith écrivait (wrote):
Je cherche a savoir s'il est possible d'ouvrir un pipe a la fois en lecture et en ecriture ?
Ce n'est pas facile à gérer (en gros si on ne sait pas faire d'écriture non bloquante, il y un risque de tomber sur un interblocage si on ne maîtrise pas le fonctionnement du soft en face). Ce n'est donc pas prévu par défaut en Perl.
Ce que je voudrais, c'est faire un truc du genre :
open(FILTRE, '| monprogramme |'); while (<>) { print FILTRE, $_; my $result = <FILTRE>; print STDOUT, $result; }
J'ai simplifie un peu mais l'idee est que je voudrais donner des lignes une par une a mon programme et lire la sortie au fur et a mesure (parce que la sortie du programme pour chaque ligne influence les lignes suivantes en entree).
Lisez 'perlipc' :
perldoc perlipc
ou (en français pour perl 5.6.0) :
<http://www.enstimac.fr/Perl/DocFr/perlipc.html>
en particulier la partie sur les communications bi-directionnelles.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Laurent Wacrenier
Winston Smith écrit:
Je cherche a savoir s'il est possible d'ouvrir un pipe a la fois en lecture et en ecriture ? Ce que je voudrais, c'est faire un truc du genre :
open(FILTRE, '| monprogramme |');
Là tu aurais deux pipse (un en lecture et un en écriture)
Pour ça, utilise
perldoc IPC::Open2 (et IPC::Open3)
Winston Smith <winston_smith@linuxmail.org> écrit:
Je cherche a savoir s'il est possible d'ouvrir un pipe a la fois en
lecture et en ecriture ? Ce que je voudrais, c'est faire un truc du
genre :
open(FILTRE, '| monprogramme |');
Là tu aurais deux pipse (un en lecture et un en écriture)