Форум программистов, компьютерный форум, киберфорум
Наши страницы
С под Linux
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Dizark
25 / 25 / 16
Регистрация: 12.04.2013
Сообщений: 71
1

Демоны и stdout

14.11.2013, 11:49. Просмотров 668. Ответов 2
Метки нет (Все метки)

Есть устройство на linux (busybox). На нем в автозагрузке запускается программа.
Чтобы программа не завешивала скрипт автозагрузки, она запускается через загрузчик, который порождает дочерний процесс, запускает в нем эту программу, а сам отваливается.

Вроде все хорошо и прекрасно, но на длительном включении обнаружилась бага - вывод в stdout программы пишется в boot.log. И через несколько дней забивает весь рам диск в ноль, так что уже не создать нового файла (файлы генерятся в /tmp на рамдиске, чтобы не дергать NAND диск).

Собственно вопрос следующий - есть ли какой способ запрета вывода в stdout, stderr (кроме как коментирования всех printf)

Или может у меня "демонология" неправильно описана? )

Вот код "загрузчика":
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int main ()
{
    int pid;
    pid = fork ();
    if (pid == 0)
        execl ("./control.elf", "control.elf", (char*) 0);
 
    pid = fork ();
    if (pid == 0)
        execl ("./remote_console.elf", "remote_console.elf", (char*) 0);
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2013, 11:49
Ответы с готовыми решениями:

Stdout записать в буфер и затем в stdout
Привет, подскажите начинающему как записать страницу загруженную с помощью curl...

Перехват вывода приложений, не использующих stdout
Господа, возникла такая проблемка: требуется отловить вывод программ, которые...

Перенаправление stdin/stdout дочернего процесса
Есть программа, доступа к коду которой нет. Она ожидает данные на stdin и...

Чем потоки stdin, stdout, stderr отличаются от потоков процессов
Вопрос в заголовке.

Демоны в LCD
В общем, в ходе своих разработок с платой STM32F746 Dysco с некоторого времени...

2
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
14.11.2013, 12:19 2
Если программа пишет весь вывод в stdout и stderr, при этом весь вывод пишется в файл, значит где-то стоит перенаправление вывода.
Чтобы программа не завешивала скрипт загрузчик не нужен, достаточно запустить программу так: program &
0
Dizark
25 / 25 / 16
Регистрация: 12.04.2013
Сообщений: 71
14.11.2013, 14:03  [ТС] 3
В boot.log пишется процесс загрузки системы и вывод запускаемых служб (ну чтобы если что-то пойдет не так, хоть прочитать можно было).

видимо да, на момент загрузки системы идет перенаправление в файл.
а так как, тоже видимо, отработка скрипта postup.sh также является частью загрузки - весь вывод запускаемых им программ (и похоже дочерних) также перенаправлен в boot.log

.....
В общем поборол следующим образом - в postup.sh объявил еще одно перенаправление stdout в /dev/null

Bash
1
2
exec 6>&1
exec > /dev/null
Отменять перенаправление не надо, т.к. в init.rc восстанавливается стандартные файловые дескрипторы после загрузки
И даже лог загрузки сохранился )
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2013, 14:03

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

Процессы и Демоны
Добрый день нужно написать 2 лабы но я и с линксом плохо знаком не то что с...

Что такое Демоны?
Здравствуйте, есть намерения научится писать клиент-сервер, и наткнулся на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru