Bonjour,
tout d'abord je dois prévenir : grand débutant. (j'ai l'impression d'avoir créér cette discussion une première fois dans une mauvaise section du forum, désolé pour ça).
Donc, j'essaye de faire un script en PERL qui génère des nombres qui seront utilisés comme arguments par un programme 'X' déjà compilé.
La ligne de base de 'X' sous linux est :
./X nrep -arg1 tbs -arg2 tbs <input >output
où nrep est le nombre d'itérations. Pour chacune de ces itérations, X va lire une ligne du fichier input (autant de lignes que d'itération normalement) et utiliser les arguments lu dans cette ligne, puis écrire le résultat du calcul dans le fichier output (une ligne par itération là aussi), et passera à la ligne(/itération) suivante. (pour info ; "tbs" est un tag qui signifie que la valeur prise par cet argument doit être pioché dans le fichier input).
Ce qui m'intéresse, c'est d'avoir un seul fichier contenant l'output, mais pas de fichier contenant l'input.
Alors j'ai essayé d'écrire un truc dans ce style là :
1 2 3 4 5 6 7 8 9
|
system("mknod fifo1 p"); #créer le fifo
system("./X 10 tbs tbs <fifo1 >test"); #en me disant que X se mettra en standby tant qu'il ne reçoit pas de flux depuis l'autre coté du pipe
open(FHO, ">fifo1") or die ("cannot open fifo1"); #pour écrire dans le fifo mes arguments générés avec PERL
for $rep(1 .. 10){
print FHO "$rep $rep\n";
}
close(FHO); |
Mais en lançant ce type de script PERL :
-le fichier fifo1 est créé.
-le fichier "test" ne l'est pas.
-le script s'exécute sans s'arrêter.
en faisant "ctrl + C" (deux fois), j'ai ceci :
^Csh: cannot open fifo1: Interrupted system call
Je me demandais si ça pouvait inspirer qqun de ce forum !
Merci d'avance en tout cas
Partager