这是我的代码:
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
}
答案 0 :(得分:3)
您需要致电shmget
,而不是semget
。