|
8 / 8 / 4
Регистрация: 29.10.2012
Сообщений: 167
|
|||||||||||
Прошу оценки29.11.2013, 07:17. Показов 1190. Ответов 11
Метки нет (Все метки)
Есть следующее задание:
Открыть файл и записать в него первое сообщение(«Hello »). После разветвления процесса в дочернем записать в файл второе сообщение(«World»). Выполнить программу, просмотреть созданный файл и объяснить результат. Что будет, если попытаться закрыть файл в дочернем процессе, а в родительском после ожиданияwait(child_pid) записать в файл третье сообщение? Реализовал его следующим образом:
Добавлено через 18 минут А лучше, если объясните вот этот вариант:
0
|
|||||||||||
| 29.11.2013, 07:17 | |
|
Ответы с готовыми решениями:
11
Прошу оценки железяки Прошу Вашей оценки. Прошу оценки сайта |
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
| 29.11.2013, 14:31 | ||||||
1
|
||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 29.11.2013, 15:10 | ||
|
Как выше правильно написал stima, возникнет гонка. С открытым файлом в системной таблице у тебя связано смещение, которое указывает куда данные будут писаться. Когда ты пишешь в файл что-то, смещение меняется (не всегда это верно). Поэтому следующая запись будет писать данные в файл с новой позиции. В твоем примере возможно 4 варианта: 1. Родительский процесс написал Hello и успел обновить смещение в таблице открытых файлов. Дочерний допишет World! по новому смещению. Получится "Hello World!" 2. Родительский процесс написал Hello и не успел обновить смещение в таблице открытых файлов, и запустился дочерний процесс. Дочерний допишет World! по старому смещению, которое указывает на начало файла. Получится, что World! перезапишет Hello и будет просто "World!" То же самое, если первым запустился дочерний процесс. Либо он напишет "World!" и успеет обновить смещение - "World!Hello", либо не успеет обновить смещение, тогда "Hello " перезапишет "World!" и останется "Hello " Как-то так должно работать.
1
|
||
|
8 / 8 / 4
Регистрация: 29.10.2012
Сообщений: 167
|
||||||
| 29.11.2013, 16:43 [ТС] | ||||||
|
В общем в итоге, так как по заданию написано Открыть файл -> записать в него "Hello " -> разветвить процесс на два и в дочернем записать в него "World!", я сделал следующие:
0
|
||||||
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
| 29.11.2013, 16:59 | ||||||
|
Я думаю от Вас требовалось следующие.
0
|
||||||
|
8 / 8 / 4
Регистрация: 29.10.2012
Сообщений: 167
|
|
| 29.11.2013, 17:01 [ТС] | |
|
stima, не пойму: объявляем status а дальше его ждем...а чего ждем??? если статусу ничего не присваивали.
Да, но в задании выделено именно: Открыть файл и записать в него первое сообщение(«Hello »). После разветвления процесса в дочернем записать в файл второе сообщение(«World»).
0
|
|
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 29.11.2013, 17:48 | |
|
Ждем завершение чайлда, спрашивайте у мужика. Если по условию, тогда Вы правы.
0
|
|
|
8 / 8 / 4
Регистрация: 29.10.2012
Сообщений: 167
|
|
| 29.11.2013, 17:50 [ТС] | |
|
stima, в чайлде ждем завершения чайлда (if pid == 0 ведь)? Так работает. Кстати я похожее писал, только без wait. Я хочу просто понять как можно лучше все.
Т.е. если по условию, тогда не получится так что бы не открывать и закрывать файл в обоих процессах?
0
|
|
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 29.11.2013, 18:05 | |
|
кхм ... в паренте ждем завершение чайлда (я ошибся) ...
а по вопросу, наверное можно, но я Вам не подскажу. Гуглите в сторону изменений дискриптора и/или опций открытия с блокировками и т.д..
1
|
|
|
8 / 8 / 4
Регистрация: 29.10.2012
Сообщений: 167
|
||||||
| 29.11.2013, 18:22 [ТС] | ||||||
|
stima, если wait сделать в parent тогда там выходит:
world! Hello
0
|
||||||
| 29.11.2013, 19:22 | |
|
Не по теме: Еще забыл вариант с World!Hello
0
|
|
|
40 / 37 / 15
Регистрация: 25.10.2012
Сообщений: 112
|
||
| 01.12.2013, 01:50 | ||
|
1
|
||
| 01.12.2013, 01:50 | |
|
Помогаю со студенческими работами здесь
12
Сборка на AMD FX прошу оценки
Уважаемая публика, прошу вашей оценки=) Сборка игрового ПК. прошу оценки 75000 рублей Определить количество дней, в которых оценки меньше средней оценки по классу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|