|
8 / 8 / 4
Регистрация: 29.10.2012
Сообщений: 167
|
|||||||||||
Прошу оценки29.11.2013, 07:17. Показов 1199. Ответов 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 рублей Определить количество дней, в которых оценки меньше средней оценки по классу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|