[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Разделяемая память - Родительский процесс
Разделяемая память может использоваться неродственными процессами,
однако, программы в этом примере исполняются родительским и
порожденным процессами. На следующих страницах приведены две
программы, использующие разделяемую память. Одна программа создает
сегмент разделяемой памяти и инициализирует его в соответствии с
количеством мест в классе. Затем, создаются несколько копий
порожденного процесса (fork(2) и exec(2)). Эти порожденные процессы
(продавцы) периодически продают места в классе. Для того чтобы
исключить одновременный доступ к разделяемому сегменту, используются
семафоры. Каждый из продавцов завершается когда видит, что в классе
больше не осталось места. Родительский процесс ожидает, пока все его
подпроцессы завершатся, а затем удаляет семафоры и разделяемый
сегмент.
Файл заголовка registration.h используется как инициализатором
(родителем), так и продавцами (порожденными процессами). Он описывает
формат информации о классе.
registration.h
1 struct CLASS {
2 char class_number[6];
3 char date[6];
4 char title[50];
5 int seats_left;
6 };