我只是想在两个进程之间共享一个整数,但是内存段在程序 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/