#include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<signal.h> #include<sys/ipc.h> #include<sys/msg.h> #include<sys/shm.h> char *addr; //客户端发送消息 void client(){ //申请共享内存,shmget函数的具体意思自行百度 int shmid = shmget(100,2,IPC_CREAT|0777); //获取共享内存的首地址,shmat函数的具体意思自行百度 addr = (char *)shmat(shmid,NULL,0); //通过地址在共享内存中写入数据 *addr = 'o'; *(addr+1) = 'k'; } //服务端获取消息 void service(){ //申请共享内存,和客户端保持一致 int shmid = shmget(100,2,0777); //获取共享内存首地址 addr = (char *)shmat(shmid,NULL,0); //通过地址获取数据 printf("%c",*addr); printf("%c\n",*(addr+1)); } int main(){ int pid; //创建子进程 while((pid = fork()) == -1); if(pid == 0){ //子进程调用客户端 client(); }else{ sleep(1); //父进程调用服务端 service(); } return 0; }