j'utilisais scons (outil de construction python) qui appelle gcc pour construire un fichier, comme ceci:Shell redirect: scons appelle gcc, redirections d'erreur ne fonctionne pas
$scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o 1.o -c 1.cpp
1.cpp:20:5: error: no matching function for call to 'g'
g(&obj2);
^
1.cpp:12:6: note: candidate function not viable: no known conversion from 'B *' to 'A &' for 1st argument; remove &
void g(A&a){
^
1 error generated.
scons: *** [1.o] Error 1
scons: building terminated because of errors.
Alors j'essaie de sauver tous sortie vers un fichier. Je suppose que les messages d'erreur sont stderr, alors j'essaie de rediriger fd = 2 à fd = 1 comme ceci:
$scons 2>&1 >error1
1.cpp:20:5: error: no matching function for call to 'g'
g(&obj2);
^
1.cpp:12:6: note: candidate function not viable: no known conversion from 'B *' to 'A &' for 1st argument; remove &
void g(A&a){
^
1 error generated.
scons: *** [1.o] Error 1
Mais semble ERROR1 ne contient des informations de commande « scons » lui-même. Tous gcc messages d'erreur sont toujours à l'écran, et non enregistrés dans « error1 »
$cat error1
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o 1.o -c 1.cpp
scons: building terminated because of errors.
Alors, comment faire tous les scons appelés progrems réacheminer leur fd = 2 à fd = 1? Ou est-ce une limitation de la redirection de shell que seul le flux du premier appelant pourrait être redirigé?
[BashFAQ # 55] (http://mywiki.wooledge.org/BashFAQ/055) semble extrêmement pertinent. –
Vous pouvez également voir cet article: [Dans le shell, que signifie 2> & 1?] (Http://stackoverflow.com/questions/818255/in-the-shell-what-does-21-mean?noredirect = 1 & lq = 1) – codeforester
Je n'ai pas lu toutes les réponses, mais la question ne semble pas couvrir l'ordre entre les redirections - ce qui est plus qu'un peu pertinent. –