Je veux sortir certaines données vers un tube et faire en sorte que l'autre processus fasse quelque chose à la ligne de données par ligne. Voici un exemple de jouet:Comment éviter les tubes nommés FIFO de fermeture d'écho? - Comportement drôle des FIFO Unix
mkfifo pipe
cat pipe&
cat >pipe
Maintenant, je peux entrer ce que je veux, et après avoir appuyé sur Entrée, je vois immédiatement la même ligne. Mais si second tuyau de remplacement avec echo
:
mkfifo pipe
cat pipe&
echo "some data" >pipe
Le tuyau se ferme après echo
et cat pipe&
finitions pour que je ne peux pas passer plus de données à travers le tuyau. Existe-t-il un moyen d'éviter la fermeture du canal et le processus qui reçoit les données, afin que je puisse passer plusieurs lignes de données à travers un script bash et les traiter à leur arrivée?
La deuxième version fait un travail exellent! Le premier ne fonctionne pas pour moi parce que je ne veux pas redémarrer le processus qui reçoit des données. – user1084871
Vous pourriez être en mesure de tricher et d'avoir le 'chat' tenir le tuyau ouvert pour l'écriture en utilisant:' cat pipe 3> pipe'. La commande 'cat' n'utilisera pas le descripteur de fichier 3, mais aura le FIFO appelé pipe ouvert pour l'écriture (bien qu'il le lira sur un autre descripteur de fichier - probablement le numéro 4). –
Est-ce que 'exec> 6 pipe' n'atteint pas la même chose? Assigne fondamentalement 'pipe' au descripteur de fichier 6 et le maintient ouvert pour l'écriture. Au lieu d'écrire directement sur 'pipe' vous voudrez probablement écrire dans ce descripteur en utilisant'> & 6' mais sinon il devrait le garder ouvert iirc – Haravikk