Я всегда включаю все предупреждения, и затем устанавливаю мой проект прекратить создавать, если существуют какие-либо предупреждения.
, Если существуют предупреждения, то необходимо проверить каждого, чтобы гарантировать, что нет никакой проблемы. Выполнение этого много раз является пустой тратой времени. Не выполнение, которое это подразумевает, приведет к ошибкам, вползающим в Ваш код.
существуют способы удалить предупреждение (например, #pragma argsused).
Позволяют компилятору сделать работу.
Сам bash никогда не будет записывать какие-либо данные в ваш файл журнала. Вместо этого команды, которые он вызывает как часть сценария, будут по отдельности записывать выходные данные и сбрасываться всякий раз, когда им это нравится. Итак, ваш вопрос на самом деле заключается в том, как заставить команды в сценарии bash сбрасываться, и это зависит от того, что они собой представляют.
Это не функция bash
, так как оболочка только открывает файл, о котором идет речь, а затем передает дескриптор файла в качестве стандартного вывода сценария. Что вам нужно сделать, так это убедиться, что выходные данные вашего скрипта сбрасываются чаще, чем вы сейчас.
Например, в Perl это можно сделать, установив:
$| = 1;
См. perlvar для получения дополнительной информации по этому поводу.
Не знаю, сработает ли это, но как насчет вызова sync
?
хочешь нет, перенаправление работает так.
В вашем случае вывод (то есть ваш сценарий завершен) вашего сценария перенаправлен в этот файл.
Вы хотите добавить эти перенаправления в свой сценарий.
У меня была такая проблема с фоновым процессом в Mac OS X с использованием StartupItems
. Вот как я ее решил:
Если я сделаю sudo ps aux
, то увижу, что mytool
запущен.
Я обнаружил, что (из-за буферизации) при выключении Mac OS X mytool
не передает вывод команде sed
. Однако если я выполню sudo killall mytool
, то mytool
передаст вывод команде sed
. Поэтому я добавил кейс stop
в StartupItems
, который выполняется при выключении Mac OS X:
start)
if [ -x /sw/sbin/mytool ]; then
# run the daemon
ConsoleMessage "Starting mytool"
(mytool | sed .... >> myfile.txt) &
fi
;;
stop)
ConsoleMessage "Killing mytool"
killall mytool
;;