Intereting Posts

Перенаправление не работает

Я хочу вывести вывод моей программы в файл. Я добавил следующее:

./prog > log 2>&1 

Но в файле «log» нет ничего. Я использую Ubuntu 11.10, а shell по умолчанию – bash.

Кто-нибудь знает причину этого И как я могу отладить это?

Существует много возможных причин:

  • Программа считывает ввод из файла log когда вы пытаетесь перенаправить его с усечением (см. Раздел «Почему не выполняется сортировка файла1? File1»? )
  • Выход буферизуется так, что вы не видите данные в файле до тех пор, пока выходной буфер не будет сброшен. Вы можете вручную вызвать fflush или вывести std::flush если используете stream ввода-вывода C ++ и т. Д.
  • Программа достаточно умна и отключает вывод, если выходной stream не является терминалом.
  • Вы смотрите на неправильный файл (то есть в другой каталог).
  • Вы пытаетесь сбросить содержимое файла неправильно.
  • Ваша программа выводит «\ 0» в качестве первого символа, поэтому выход кажется пустым, хотя есть некоторые данные.
  • Назовите свое.

Лучше всего запустить это приложение под отладчиком (например, gdb ) или использовать strace или ptrace (или оба) и посмотреть, что делает программа. Я имею в виду, действительно, redirect вывода работает в течение последних, как 40 лет, поэтому проблема должна быть где-то в другом месте.