感谢支持
我们一直在努力

Linux入门教程:Linux共享内存

在Linux下进行数据相比较大的进程间通信时,共享内存是最高效的办法。

(1)create shared mem: shmget();

(2)map shared mem: shmat();

shmget()

int shmget(key_t key, int size, int shmflg);

返回值:成功,返回shared mem 的段标识符;失败,返回-1.

shmat()

int shmat( int shmid, char *shmaddr, int shmflg);

返回值:成功,返回shared mem链接到进程中的地址;失败,返回-1.

shmdt()

不再需要共享内存段时,将其从地址空间中脱离。

int shmdt( char *shmaddr);

  1. #include <sys/types.h>  
  2. #include <sys/ipc.h>  
  3. #include <sys/shm.h>  
  4. #include <stdio.h>  
  5. #include <stdlib.h>  
  6.  
  7. #define BUFSZ 2048  
  8. int main() 
  9.     int shmid; 
  10.     char *shmadd; 
  11.     //创建共享内存  
  12.     if((shmid=shmget(IPC_PRIVATE,BUFSZ,0666))<0)           
  13.     { 
  14.         perror(“shmget”); 
  15.         exit(1); 
  16.     } 
  17.     else 
  18.         printf(“created shared-memory: %d\n”,shmid); 
  19.         system(“ipcs -m”);                                 //ipcs -m:显示所有进程间通信的状态  
  20.     //映射共享内存  
  21.     if((shmadd=shmat(shmid,0,0))<(char *)0){ 
  22.         perror(“shmat”); 
  23.         exit(1); 
  24.     } 
  25.     else 
  26.         printf(“attached shared-memory\n”); 
  27.     system(“ipcs -m”); 
  28.      
  29.     //取消共享内存映射  
  30.     if((shmdt(shmadd))<0){ 
  31.         perror(“shmdt”); 
  32.         exit(1); 
  33.     } 
  34.     else 
  35.         printf(“deleted shared-memory\n”); 
  36.     system(“ipcs -m”); 
  37.      
  38.     exit(0); 
赞(0) 打赏
转载请注明出处:服务器评测 » Linux入门教程:Linux共享内存
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏