Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Лабораторная работа по "Программированию"

Автор:   •  Ноябрь 9, 2022  •  Лабораторная работа  •  375 Слов (2 Страниц)  •  138 Просмотры

Страница 1 из 2

Родитель передает потомку три стороны треугольника, потомок

возвращает его периметр.

Родитель:

#include <stdio.h>

#include <stdlib.h>

#include <sys/mman.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <unistd.h>

#include <string.h>

#include <assert.h>

int main(int argc, char **argv) {

int oflags=O_RDWR;

int opt;

while ((opt = getopt(argc, argv, "c")) != -1) {

switch (opt) {

case 'c':

oflags = O_RDWR | O_CREAT;

break;

default:

fprintf(stderr, "Usage: %s -[c]\n", argv[0]);

exit(EXIT_FAILURE);

}

}

//размер разделяемой памяти

off_t length = 2 * 1024;

//имя разделяемой памяти

char *name = "/hello";

//создание или открытие разделяемой памяти с правами доступа rw-rw-rw

int fd = shm_open(name, oflags, 0666 );

//очищение разделяемой прамяти

ftruncate(fd, length);

assert (fd>0);

//создание отображения разделяемой памяти в память системы

u_char *ptr= (u_char*) mmap(NULL, length, PROT_READ|PROT_WRITE,MAP_SHARED, fd, 0);

//передаваемые данные

u_char *msg = {"1218,78,999"};

strcpy((char*)ptr,msg);

//вывод на что выделилась общая память

fprintf(stderr, "Shared Memory Address: %s \n", ptr);

assert (ptr);

//закрываем файл разделяемой памяти

close(fd);

exit(0);

}

потомок:

#include <stdio.h>

#include <stdlib.h>

#include <sys/mman.h>

...

Скачать:   txt (3.1 Kb)   pdf (50.5 Kb)   docx (9.3 Kb)  
Продолжить читать еще 1 страницу »
Доступно только на Essays.club