Перенаправить вывод программы в файл не удается

Поэтому у меня есть программа, которая позволяет называть ее foo. Я пытаюсь перенаправить вывод терминала в файл, используя следующую команду.

foo > ./someFile.txt 

Теперь, когда я запускаю эту команду, создается файл someFile.txt, но он пуст. Любые предложения о том, как я могу перенаправить вывод терминала?

  • Как отправить надстройку stdout в multilog и второй процесс
  • Что случилось с этим использованием перенаправления?
  • Вывод команды перенаправления на / dev / null
  • Перенаправление после запуска процесса
  • io перенаправление на «крест» 2 программы
  • Почему перенаправление STDERR на / dev / null выполняется таким образом?
  • Как вы помните синтаксис для перенаправления 2> и 1
  • Захват вывода без перенаправления и оставьте его на терминале тоже
  • 2 Solutions collect form web for “Перенаправить вывод программы в файл не удается”

    Ожидается поведение, что файл someFile.txt будет создан. Независимо от того, содержит ли этот файл что-либо, зависит от того, что должна делать ваша программа foo .

    Какая бы проблема вы ни сталкивались, похоже, не связана с перенаправлением вывода. Вы можете попробовать следующую команду в качестве теста:

     cat > someFile.txt 

    типа ничего. Все, что вы набрали, будет перенаправлено на someFile.txt (заканчивается ctrl + d ).

    Кстати, выходной файл создается вашей оболочкой, а не вашей программой foo . Даже если вы наберете несуществующую команду, выходной файл все равно будет создан (пустой):

     /bin/nonexistent > zzz 

    Другая возможность заключается в том, что foo использует isatty и ничего не пишет для stdout, если stdout не указывает где-то интерактивным.

    СИНТАКСИС

     #include <unistd.h> int isatty(int fd); 

    ОПИСАНИЕ Функция isatty () проверяет, является ли fd открытым файловым дескриптором, относящимся к терминалу.

    Эта короткая программа Python демонстрирует это:

     import sys, os if sys.stdout.isatty(): print "Hello, tty %s" % os.ttyname(1) else: print "stdout: not a typewriter: how boring" 

    Как и эта короткая программа C:

     #include <stdio.h> #include <unistd.h> int main (void) { if ( isatty(1) ) { printf("Hello, tty %s\n", ttyname(1)); } else { printf("stdout: not a typewriter: how boring\n"); } return 0; } 

    Обе программы имеют одинаковое поведение:

     $ ./isatty > notatty ; cat notatty stdout: not a typewriter: how boring $ ./isatty.py Hello, tty /dev/pts/1 $ ./isatty | cat stdout: not a typewriter: how boring 

    Программы могут выбирать, как и что они печатают, независимо от того, перенаправляются ли они.

    Общее применение этого заключается в том, чтобы избежать написания escape-последовательностей ANSI, считываемых терминалами ( \e[33;1m и т. Д.) Для раскраски текста в файлы, что выглядит уродливым и смущает парсеры.

    Interesting Posts

    Как отслеживать изменения ресурсов (inodes, blocks) при запуске программы

    Как заменить Php7 install from dotdeb на php7 от Stretch

    Как я могу заставить auditd сообщать ТОЛЬКО правила, которые я указываю с помощью auditctl? (Linux)

    Как я могу подтвердить, что `nice` работает?

    Изменение набора двоичных файлов

    Arch Linux на проблемах с подключением виртуального интернет-соединения на VirtualBox

    Рассчитать количество дней оплаты

    Какая служба systemd запускает текстовую консоль на устройстве framebuffer?

    Используйте «дружественную» метку на дисках или разделах во FreeBSD

    Дайте группе право отправлять сигналы убийства

    Потеря связи ssh

    Как получить только один символ после совпадения в строке (для определения версии RHEL от rpm)

    Как запустить pure-ftpd с портом в качестве службы

    Vim: VimRepress и WordPress.com – как вставлять фрагменты кода?

    Как отделить имена генов, подкрепленные подчеркиванием?

    Linux и Unix - лучшая ОС в мире.