为什么我会出现分段错误?

时间:2013-11-22 19:10:03

标签: c unix memory segmentation-fault shared

这是我的代码:

struct bacchetta {
  bool in_uso;
};

int main() 
{
  key_t key;
  if ((key = ftok(".", 'a')) == -1) {
    perror("ftok");
    exit(1);
  }

  int shmid;
  if ((shmid = semget(key, sizeof(struct bacchetta)*5, 0600 | IPC_CREAT )) == -1) {
    perror("Errore creazione dell'area di memoria per le bacchette");
    exit(1);
  }

  bacchetta *bacchette = (bacchetta*)shmat(shmid, NULL, 0);
  if (bacchette == NULL) {
    perror("Errore nell'attachment dell'area di memoria"); 
    exit(2);
  }

   //!!!HERE segmentation-fault (core dumped)
   if (!bacchette[0].in_uso) printf("ok");// = false;

   return 0
}

1 个答案:

答案 0 :(得分:3)

您需要致电shmget,而不是semget