LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 923|回复: 2

关于共享存储区通信的问题

[复制链接]
发表于 2006-2-24 12:54:54 | 显示全部楼层 |阅读模式
一段在这个论坛里面看到的程序,上级测试发现与预期结果不符。
运行后没有任何结果显示程序就结束了。
我看了看程序结构觉得没有什么问题,就是利用共享存储区进行同步的程序。
请各位指点一下
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#define SHMKEY 75
int shmid,i; int *addr;

void client( )
{ int i;
   shmid=shmget(SHMKEY,1024,0777); /*打开共享存储区*/
   addr=shmat(shmid,0,0); /*获得共享存储区首地址*/
   for (i=9;i>=0;i--)
   { while (*addr!=-1);
      printf("(client) sent\n");
      *addr=i;
   }
   exit(0);
}

void server( )
{
   shmid=shmget(SHMKEY,1024,0777|IPC_CREAT); /*创建共享存储区*/
   addr=shmat(shmid,0,0); /*获取首地址*/
   do
   {
     *addr=-1;
     while (*addr==-1);
     printf("(server) received\n");
   }while (*addr);
   shmctl(shmid,IPC_RMID,0); /*撤消共享存储区,归还资源*/
   exit(0);
}

main( )
{
   while ((i=fork( ))= =-1);
   if (!i) server( );
   system(“ipcs -m”);
   while ((i=fork( ))= =-1);
   if (!i) client( );
   wait(0);
   wait(0);
}
发表于 2006-2-25 16:01:01 | 显示全部楼层
我运行似乎没什么问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-26 20:06:32 | 显示全部楼层
会不会跟运行环境有关呢? 你用的是什么环境?我是FC3
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表