Bonjour,
J’ai récemment découvert la commande mkfifo. J’ai décidé de jouer un peu avec. Mais il y a un truc que je n’arrive pas a faire: Contrôler simultanément le couple stdin stdout d’un simple programme.
Programme en C:
//gcc test.c
#include <stdio.h>
int main()
{
char chaine [6] = {};
while (1)
{
scanf(" %[^\n]s", chaine);
chaine[2]='.';
printf("%s\n", chaine);
}
return 0;
}
En Bash,
Ceci marche:
mkfifo /tmp/input /tmp/output
./a.out < /tmp/input &
exec 3> /tmp/input
echo AAAAA >&3
echo BBBBB >&3
exec 3>&-
killall ./a.out
rm /tmp/input /tmp/output
Ceci marche:
mkfifo /tmp/input /tmp/output
cat < /tmp/input | cat > /tmp/output &
exec 3> /tmp/input
echo AAAAA >&3
head -1 < /tmp/output
exec 3>&-
killall ./a.out
rm /tmp/input /tmp/output
Ceci marche:
mkfifo /tmp/input /tmp/output
cat < /tmp/input | ./a.out &
exec 3> /tmp/input
echo AAAAA >&3
exec 3>&-
killall ./a.out
rm /tmp/input /tmp/output
Mais ceci ne marche pas:
mkfifo /tmp/input /tmp/output
cat < /tmp/input | ./a.out | cat > /tmp/output &
exec 3> /tmp/input
echo AAAAA >&3
head -1 < /tmp/output
exec 3>&-
killall ./a.out
rm /tmp/input /tmp/output
Je ne comprends pas pourquoi le dernier ne marche pas? Le but final étant de contrôler les entrées-sorties d’un programme via deux fifo dans un premier temps, puis avec une seule si possible.
Merci d’avance
+0
-0