Реферат: Interprocess Communication

sops.sem_op = 0; /* ждем, пока обнулится семафор */

semop(semid, &sops, 1);

shmdt(shmaddr); /* отключаемся от разд. памяти */

semctl(semid, 0, IPC_RMID, (union semun) 0); /* убиваем семафор */

shmctl(shmid, IPC_RMID, NULL); /* уничтожаем разделяемую память */

exit(0);

}

2й процесс:

/* здесь нам надо корректно определить существование ресурса, если он есть - подключиться, если нет - сделать что-то еще, но как раз этого мы делать не будем */

#include <stdio.h>

#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/sem.h>

int main(void)

{ key_t key; int semid;

struct sembuf sops;

char *shmaddr;

char st=0;

/* далее аналогично предыдущему процессу - инициализации ресурсов */

semid = semget(key,1,0666 | IPC_CREAT);

shmid = shmget(key,256, 0666 | IPC_CREAT);

shmaddr = shmat(shmid, NULL, 0);

sops.sem_num = 0; sops.sem_flg = 0;

/* запускаем цикл */

while(st!=’Q’) {

printf(“Ждем открытия семафора \n”);

/* ожидание положительного значения семафора */

sops.sem_op=-2;

К-во Просмотров: 356
Бесплатно скачать Реферат: Interprocess Communication