я использовал SCons (питон сборки инструмента), который вызывает GCC для создания файла, например:Shell переадресацией: SCons называет GCC, строить Перенаправление ошибок не работает
$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.
Тогда я пытаюсь сохранить все вывод в файл. Я предполагаю, что сообщения об ошибках в STDERR, поэтому я стараюсь, чтобы перенаправить FD = 2, бериеся = 1, как это:
$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
Но кажется Error1 содержит только информацию о команде «Scons» сам по себе. Все НКУ сообщения об ошибках все еще на экране, не сохраняются в «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.
Итак, как сделать все SCons называемых progrems перенаправлять их FD = 2, бериеся = 1? Или это ограничение перенаправления оболочки, которое может быть перенаправлено только потоком верхнего вызывающего абонента?
[BashFAQ # 55] (http://mywiki.wooledge.org/BashFAQ/055) представляется чрезвычайно уместным. –
Вы также можете увидеть этот пост: [В оболочке, что означает 2> и 1?] (Http://stackoverflow.com/questions/818255/in-the-shell-what-does-21-mean?noredirect = 1 & lq = 1) – codeforester
Я не прочитал все ответы, но вопрос, похоже, не охватывает порядок между перенаправлениями, что более чем немного уместно. –