J'essaye de capturer toute la sortie d'une opération de construction et de l'envoyer à myprogram
. Il me semble que je ne peux en capturer qu'une partie. C'est ce que j'essaie:
make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" | myprogram &2 > 1
J'ai aussi essayé:
make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" &2 > 1 | myprogram
Fondamentalement, je veux tout envoyer à stdout
et ensuite faire quelque chose avec ça. Actuellement, je ne capture qu'une partie de la sortie et l'autre partie passe à l'écran. Comment puis-je tout diriger vers un autre programme?
Puisque vous avez deux commands, il serait préférable d'utiliser:
{ make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64"; } 2>&1 | myprogram
Ou
( make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" ) 2>&1 | myprogram
Le make clean
ne dirige pas sa sortie vers le pipe, vous voudrez utiliser l'un des deux ci-dessus pour laisser le shell redirect la sortie des deux make
calls en un seul.
Vous devez redirect STDERR vers STDOUT pour toutes les commands. Ensuite, vous pouvez le canaliser dans myprogram
.
( make clean 2>&1 && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" 2>&1 ) | myprogram
(make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64") 2>&1 | myprogram
En fonction de la complexité de mon programme, vous pouvez également essayer de passer votre make op au myprogram, dans lequel vous lirez stdout et stderr en tant que stream séparé.
Cela dépend de la complexité de votre programme.
Le principal avantage est de pouvoir gérer stdout et stderr indépendamment au lieu d'être regroupés.