![]() |
|
Модераторы: xvr |
![]()
|
|
| CPlusPlusFAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
Здравствуйте!
Вот код:
Объясните мне, как он создаёт test.txt в родительской директории, в текущей и в ./Next ? Да. При добавлении в конце дочернего процесса exit( 0 ) (и #include <stdlib.h> соответственно) test.txt создаются только в .. и ./Next. Как может exit влиять на работу процесса? Процесс же ведь не крутится в цикле. И получается тогда, что если chdir запущены в разных потоках, то их результаты не влияют друг на друга? Спасибо за внимание. |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
после создания процесса через fork(), рабочий каталог (структура struct path, инкапсулированная в структуру struct fs) у них один и тот же (т. е структуры struct path обоих процессов - побайтные копии друг друга) однако структура struct fs у каждого своя дочерний процесс выполняет chdir() и создает там test.txt родитель тем временем ждет дочерний процесс в wait() дальше дочерний процесс выполняет wait(), но т. к у него дочерних процессов нет, сразу возвращает управление и выполняет chdir() в родительский для него (в текущий для родителя) каталог, там создает test.txt и завершается родитель тем временем выходит из wait() и выполняет chdir() в родительский для него каталог и сосздает там test.txt -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| CPlusPlusFAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
MAKCim, вот я тормоз!
Вот код, который создаёт 2 файла:
, ведь fork() создаёт дочерний процесс, который дублирует ход работы текущего процесса, но с копией контекста. С тем отличием, что выполняется ещё и блок if ( pid==0 ) { ... }, но не выполняется if ( pid!=0 ) { ... }. Спасибо! Уже в который раз выручаешь! |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |