2016-04-19 2 views
0

Я закодировал это, и я не уверен, как заставить это работать любым другим способом. Я также хотел бы оценить пример того, как проверить его правильность.Перенаправить STDOUT и STDERR в файл "> &"

Спасибо за помощь

dup2(STDOUT_FILENO, STDERR_FILENO); 
dup2(fd, STDOUT_FILENO); 

ответ

2

Вы были близки, но вам нужно сделать два dup2 вызовов в обратном порядке.

dup2(fd, STDOUT_FILENO); 
dup2(STDOUT_FILENO, STDERR_FILENO); 
close(fd); 

Ваш код эквивалентен синтаксису POSIX оболочки (который доступен во всех оболочках, синтаксис основан на Bourne оболочке):

2>&1 >filename 

, что делает stderr перейти к старойstdout времени перенаправление stdout в файл.

+0

ничего себе, что делает полный смысл! – soccerkid619

+0

У вас есть способ проверить его правильность? – soccerkid619

+0

Запустите программу, которая производит нормальный вывод и ошибки, и убедитесь, что файл содержит оба. – Barmar

 Смежные вопросы

  • Нет связанных вопросов^_^