[СИ] Стандартный ввод-вывод и автозапуск.
Язык СИ ОС UNIX
Имеется маленькая стартовая программа предназначенная для авто-запуска
демонов при перезагрузке системы. Сама эта программа запускается
автоматически штатно (FReeBSD /usr/local/etc/rc.d/start.sh).
В обычных программах - не демонах, или демонах запущенных вручную, сначала
есть ввод-вывод. В программы-демоны я включаю такой кусок кода:
close(0);
close(1);
close(2);
При ручном запуске это помогает.
А как при автоматическом? Первое, что приходит в голову - должны бы быть
все три, направленные в никуда, для совместимости.
Схема
программа "старт" (запускается вручную (для теста) или автоматически).
....
if(pid==0){
k=chdir("демон");
execle("демон", argv, envp);
exit(0);
}
....
программа "демон" (запускается вручную, или автоматически программой "старт").
....
fd=open("file");
....
close(0);
close(1);
close(2);
....
fd - должен остаться открытым.
Вопрос-1.
Есть ли у этой стартовой программы ввод-вывод, и если да,
то куда он направлен, и можно ли смело применить close, fclose в демонах?
Вопрос-2.
В демонах есть printf(«Text»); и т. п., которые полезны при ручном запуске
вплоть до демонизации. Куда денутся эти сообщения при автозапуске? Не повредят ли?
Вопрос-3.
Правильный ли close(0); и др., или правильнее опасный fclose(stdin); ?