使用共享内存时出现“系统调用错误”错误

时间:2013-05-02 11:16:03

标签: c cygwin ipc shared-memory

我是共享内存的新手,我想出了以下代码:

int main()
{
  int perm=S_IRWXU|S_IRWXG|S_IRWXO;
  int fd=shmget(IPC_PRIVATE,1024,IPC_CREAT|perm);
  if(fd<0)
  {
    printf("error");
    _exit(0);
  }
  int* sum=(int*)shmat(fd,0,0);
  if(*sum==1)
  {
    printf("error\n");  
    _exit(0);
  }
  *sum=0;
  printf("asjjsad=%d",*sum);
  return 0;
}

当我运行这个时,我得到糟糕的系统调用

怎么了?

我正在尝试将sum分配给0并且让子进程计算一个值,比如sum1。然后我必须尝试将sum1添加到sum。

你是怎么做到的?

1 个答案:

答案 0 :(得分:1)

假设OP的问题发生在Cygwin上,Cygwin的Implementation Notes的以下段落有助于:

  

XSI IPC函数semctl,semget,semop,shmat,shmctl,shmdt,shmget,msgctl,msgget,msgrcv和msgsnd仅在cygserver运行时可用。