Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103121407
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-16 17:26:48

作者:flw   
 在 SCO 下调试通过。 
代码: 
shmwrite.c 写入共享内存 
# include  
# include  
# include  
# include  

void main( void ) 

   key_t key; 
   int shmid; 
   int ret; 
   char *shmbuf; 
   char buffer[] = "!!!!!!!!!!"

   key = ftok( "/"'J' ); 
   if ( key == -1 ) 
   { 
      fprintf( stderr, "ftok() failed!\n" ); 
      return  
   } 

   shmid = shmget( key, 1024, IPC_CREAT | 0666 ); 
   if ( shmid == -1 ) 
   { 
      fprintf( stderr, "Get shared memory failed!\n" ); 
      return  
   } 

   shmbuf = NULL; 
   shmbuf = shmat( shmid, NULL, 0 ); 
   if ( shmbuf == NULL ) 
   { 
      fprintf( stderr, "Attach shared memory failed!\n" ); 
      return; 
   } 

   strcpy( shmbuf, buffer ); 
   fprintf( stderr, "Shared memory writed success!\n" ); 

   ret = shmdt( shmbuf ); 
   if ( ret == -1 ) 
   { 
      fprintf( stderr, "Detach shared memory failed!\n" ); 
      return; 
   } 

   return; 

 

代码: 
shmread.c 共享内存读取 
# include  
# include  
# include  
# include  

void main( void ) 

   key_t key; 
   int shmid; 
   int ret; 
   char *shmbuf; 
   char buffer[100]; 

   key = ftok( "/"'J' ); 
   if ( key == -1 ) 
   { 
      fprintf( stderr, "ftok() failed!\n" ); 
      return  
   } 

   shmid = shmget( key, 1024, 0666 ); 
   if ( shmid == -1 ) 
   { 
      fprintf( stderr, "shmget() failed!\n" ); 
      return; 
   } 

   shmbuf = NULL; 
   shmbuf = shmat( shmid, NULL, SHM_RDONLY ); 
   if ( shmbuf == NULL ) 
   { 
      fprintf( stderr, "Attach shared memory failed!\n" ); 
      return; 
   } 

   strcpy( buffer, shmbuf ); 
   fprintf( stderr, "Read data from shared memory...\n" ); 
   fprintf( stderr, "Content:\t[%s]\n", buffer ); 

   ret = shmdt( shmbuf ); 
   if ( ret == -1 ) 
   { 
      fprintf( stderr, "Detach shared memory failed!\n" ); 
      return; 
   } 

   ret = shmctl( shmid, IPC_RMID, NULL ); 
   if ( ret == -1 ) 
   { 
      fprintf( stderr, "Remove shared memory failed!\n" ); 
      return  
   } 

   return; 

 
 
阅读(434) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~