Linux相关——linux之共享内存通信应用举例
用共享内存的通信方法编程实现信息的发送与接收。
发送进程程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<linux/shm.h>
void main()
{
int shmid; /*定义共享内存内部标识shmid*/
char *viraddr; /*定义附接共享内存的虚拟地址*/
char buffer[BUFSIZ]; /*定义存放信息的字符型数组*/
shmid=shmget(1234,BUFSIZ,0666|IPC_CREAT);/*创建共享内存*/
viraddr=(char*)shmat(shmid,0,0); /*附接到进程的虚拟地址空间*/
while(1)
{
puts("Enter some text:");
fgets(buffer,BUFSIZ,stdin);
strcat(viraddr,buffer); /*采用追加方式写到共享内存*/
if(strncmp(buffer,"end",3)==0) /*输入为"end"时结束*/
break;
}
shmdt(viraddr); /*断开附接*/
exit(0);
}
接收进程程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<linux/shm.h>
void main()
{
int shmid;
char *viraddr;
shmid=shmget(1234,BUFSIZ,0666|IPC_CREAT);/*获取共享内存*/
viraddr=(char*)shmat(shmid,0,0); /*附接到进程的虚拟地址空间*/
printf("Your message is:
%s,viraddr"); /*输出信息内容*/
shmdt(viraddr); /*断开连接*/
shmctl(shmid,IPC_RMID,0); /*撤销共享内存*/
exit(0);
}
