Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/shm.h>
- #include <sys/sem.h>
- #include <sys/ipc.h>
- #include <sys/types.h>
- #include "shmem.h"
- void main() {
- int shmid, semid;
- key_t key;
- Message *msgptr;
- key = ftok("./server.c", 'A');
- if(key < 0) {
- printf("Невозможно получить ключ!\n");
- exit(1);
- }
- shmid = shmget(key, sizeof(Message), 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, PERM);
- if(semid < 0) {
- printf("Невозможно получить семафор\n");
- exit(1);
- }
- printf("Процесс подготовки клиента выполнить операцию\n");
- semop(semid, &proc_start[0], 1);
- semop(semid, &mem_lock[0], 2);
- sprintf(msgptr->buff, "Cools");
- semop(semid, &mem_unlock[0], 1);
- semop(semid, &mem_lock[0], 2);
- shmdt(msgptr);
- shmctl(shmid, IPC_RMID, 0);
- shmctl(semid, IPC_RMID, 0);
- printf("Работа закончена\n");
- }
Add Comment
Please, Sign In to add comment