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);

}
经验分享 程序员 微信小程序 职场和发展