小编bli*_*lid的帖子

Mmap和结构

我正在使用一些代码,包括进程之间的通信,使用信号量.我做了这样的结构:

typedef struct container {
    sem_t resource, mutex;
    int counter;
} container;
Run Code Online (Sandbox Code Playgroud)

并以这种方式使用(在主应用程序中和从属进程中相同)

container *memory;

shm_unlink("MYSHM"); //just in case
fd = shm_open("MYSHM", O_RDWR|O_CREAT|O_EXCL, 0);

if(fd == -1) {
    printf("Error");
    exit(EXIT_FAILURE);
}
memory = mmap(NULL, sizeof(container), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
ftruncate(fd, sizeof(container));
Run Code Online (Sandbox Code Playgroud)

当我使用其中一个sem_函数时,一切都很好,但是当我尝试做类似的事情时

memory->counter = 5;
Run Code Online (Sandbox Code Playgroud)

它不起作用.可能我指针有问题,但我几乎尝试了一切,似乎没有任何工作.也许有更好的方法在流程之间共享变量,结构等?不幸的是,我不允许使用boost或类似的东西,代码用于教育目的,我想尽可能保持简单.

c pointers mmap

2
推荐指数
1
解决办法
5462
查看次数

标签 统计

c ×1

mmap ×1

pointers ×1