Проблема в следующем:
открываем какой нибудь файл:
FILE* log;
log=fopen("my-log","w");
fprintf(log,"begin of file\n");
...
Потом создаем дочерний процесс:
if(pid=fork())
{
fprintf(log,"Pid = %d\n",pid);
exit(0)
}
Потом создаем еще несколько таких же процессов.
Процесс - родитель завершаем следующим образом:
...
fprintf(log,"End of file\n");
fclose(log);
В результате получаем содершимое файла log:
begin of file
begin of file
Pid=1051
begin of file
Pid=1052
...
begin of file
Pid=n
End of file
По моему это происходит из-за того, что файл log, открытый в родительском процессе, просто закрывается каждый раз при смерти дочернего процесса и все его содержимое заново сохраняется (в т.ч. и строка begin of file).
Не подскажет ли глубокоуважаемый all каким образом этого можно избежать, или как запускать дочерний процесс не передавая ему дескрипторы НЕКОТОРЫХ открытых в родительском процессе фалов без вмешивания exec.
Заранее спасибо
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум создание дочерних процессов_ (2010)
- Форум fork()+exec()+pipe() (2016)
- Форум Сигналы. (2013)
- Форум Вопрос по FIFO (2014)
- Форум проблема с чтением из FIFO (2024)
- Форум Запись в файловый дескриптор дочернего процесса (2022)
- Форум Отучить дочерний процесс наследовать файловые дескрипторы (2020)
- Форум Названия для размеров часто используемых буферов (2024)
- Форум Дочерние процессы (2002)
- Форум Perl + FastCGI + nginx (2009)