Advertisement
Guest User

Untitled

a guest
Nov 13th, 2016
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <sys/shm.h>
  3. #include <sys/sem.h>
  4. #include <stdlib.h>
  5. #include <sys/ipc.h>
  6. #include <sys/types.h>
  7. #include "shmem.h"
  8.  
  9. void main() {
  10.     Message *msgptr;
  11.     int shmid, semid;
  12.     key_t key;
  13.     key = ftok("./server.c", 'A');
  14.     if(key < 0) {
  15.         printf("Невозможно получить ключ\n");
  16.         exit(1);
  17.     }
  18.     shmid = shmget(key, sizeof(Message), IPC_CREAT|IPC_EXCL|PERM);
  19.     if(shmid < 0) {
  20.         printf("Невозможно получить совместно используемой памяти\n");
  21.         exit(1);
  22.     }
  23.     msgptr = (Message*)shmat(shmid, NULL, 0);
  24.     if(msgptr == NULL) {
  25.         printf("Невозможно получить сообщение\n");
  26.         exit(1);
  27.     }
  28.     semid = semget(key, 2, IPC_CREAT|IPC_EXCL|PERM);
  29.     if(semid < 0) {
  30.         printf("Невозможно получить семафор\n");
  31.         exit(1);
  32.     }
  33.     printf("Серверный процес готовиться выполнять операцию\n");
  34.     semop(semid, &proc_wait[0], 1);
  35.     semop(semid, &mem_lock[0], 2);
  36.     printf("Считаная строка: %s\n", msgptr->buff);
  37.     semop(semid, &mem_unlock[0], 1);
  38.     shmdt(msgptr);
  39.     printf("Серверный процесс завершил работу\n");
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement