1. 前言
多进程,总有一些交互要做,不可能各自独立。这里是最简单的例子。一个写入,一个读取。
一个建立共享内存,写入数据。一个读取共享内存的内容。
2. 简单例子代码
twriter.cpp 代码如下:
#include<stdio.h>
#include<unistd.h>
#include<sys/shm.h>
#include<stdlib.h>
#include<error.h>
int main()
{
int shm_id;
int *share;
int num;
//1. 创建共享内存
shm_id = shmget (1234, getpagesize(), IPC_CREAT);
if (shm_id == -1) {
perror("shmget()");
}
//2. 获取共享内存在进程中的地址映射,以后可直接使用这个指针
share = (int *)shmat(shm_id, 0, 0);
while(1) {
num = random() % 1000;
//3. 直接向共享内存写入数据
*share = num;
printf("write a random number %d\n", num);
sleep(1);
}
return 0;
}
tread.cpp 代码如下: