c - 简单地在共享内存段 : C 中存储一个整数

标签 c ipc shared-memory

我只是想在两个进程之间共享一个整数,但是内存段在程序 1 中初始化并在程序 4 中使用。这是程序 1 中的初始化:

shmid = shmget(key, sizeof(int*), 0666 | IPC_CREAT);
int *data = (int *)shmat(shmid, (void*)0,0);

在这里我收到“从不同大小的整数转换为指针”的警告。啊。

我想很简单,但我是 IPC 的大白痴。以及 c 中的许多其他内容......

然后我将它传递给另一个程序:

snprintf(shmarg, sizeof(shmarg), "%n", data);
pid_t pid3 = run_cmd4("/home/tropix/hw11-4", shmarg, semarg, pipe_from_p2_2, pipe_to_p5_2);

但不确定如何在另一端访问它。如何在程序 4 中取回 int?

最佳答案

很确定您缺少定义 shmat() 的 header ,因此编译器猜测 shmat 返回一个 int(不是指针)。

关于c - 简单地在共享内存段 : C 中存储一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5932253/

相关文章:

c - 正确编译后如何让我的 Makefile 发出声音?

c - pthread_create 未定变量

c - 找到最大数量的最快和最有效的方法。可以通过对数组的 2 个 DISTINCT 元素执行按位和获得

javascript - 使用 IPC 实现连续 headless (headless)页面自动化

类内的Python多处理共享字典

C 决策控制解释

linux - 工控机性能: Named Pipe vs Socket

c++ - 跨多个程序实例的 ZeroMQ IPC

java - 在类中使用共享服务

multithreading - 是否可以在不使用偏移量的情况下将指针存储在共享内存中?