Я запускаю фоновый процесс на Mac и у меня проблема с обновлением журнала. Если я бегу

someprog > mylog &

тогда mylog обновляется не сразу, а с некоторыми интервалами - наверное, из-за буферизации. Если я убью программу до того, как вывод будет записан в журнал, я потеряю данные. Не было такой проблемы с той же программой на компьютерах с Linux, поэтому я надеюсь, что смогу сделать ее обновленной во время выполнения на Mac. Есть идеи как?

someprog - это программа F77, которая была написана не мной.

2 ответа2

1

Одним из решений является использование команды unbuffer , которая перенаправляет вывод на псевдотерминал. В UNIX-подобных операционных системах терминальный вывод буферизуется по линии, а нетерминальный вывод буферизируется (4k на моей рабочей станции OpenBSD)

$ sysctl hw.pagesize       
hw.pagesize=4096

Смотрите также

0

Является ли программа myprog приложением, которое вы написали сами?

Если это так, вы можете принудительно сбросить выходные буферы при каждом операторе записи. Вывод буферизуется в большинстве случаев по умолчанию, чтобы избежать чрезмерного ввода-вывода, но в этом случае похоже, что вы хотите получить все сразу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .