このCコードが「セグメンテーション違反」で終わる理由を知っていますか?
#include <semaphore.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define NAMESEM "/mysem"
int main(int argc, char* argv) {
sem_t* sem;
int fd = shm_open(NAMESEM, O_RDWR|O_CREAT|O_EXCL|O_TRUNC, 0);
ftruncate(fd, sizeof(sem_t));
sem = mmap(NULL, sizeof(sem_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
sem_init(sem, 1, 0);
sem_wait(sem);
return 0;
}
これに関してここで見つかったすべての投稿をフォローしましたが、sem_init()がセグメンテーション違反を生成しているようで、その理由はわかりません。ポインタを間違えていませんか?