[<<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  };