Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <sys/shm.h>
- #include <sys/sem.h>
- #include <stdlib.h>
- #include <sys/ipc.h>
- #include <sys/types.h>
- #include "shmem.h"
- void main() {
- Message *msgptr;
- int shmid, semid;
- key_t key;
- key = ftok("./server.c", 'A');
- if(key < 0) {
- printf("Невозможно получить ключ\n");
- exit(1);
- }
- shmid = shmget(key, sizeof(Message), IPC_CREAT|IPC_EXCL|PERM);
- if(shmid < 0) {
- printf("Невозможно получить совместно используемой памяти\n");
- exit(1);
- }
- msgptr = (Message*)shmat(shmid, NULL, 0);
- if(msgptr == NULL) {
- printf("Невозможно получить сообщение\n");
- exit(1);
- }
- semid = semget(key, 2, IPC_CREAT|IPC_EXCL|PERM);
- if(semid < 0) {
- printf("Невозможно получить семафор\n");
- exit(1);
- }
- printf("Серверный процес готовиться выполнять операцию\n");
- semop(semid, &proc_wait[0], 1);
- semop(semid, &mem_lock[0], 2);
- printf("Считаная строка: %s\n", msgptr->buff);
- semop(semid, &mem_unlock[0], 1);
- shmdt(msgptr);
- printf("Серверный процесс завершил работу\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement