C を使用して、共有メモリをセットアップしようとしています。私のコードは次のようになります:
key_t key = ftok("SomeString", 1);
static int *sharedval;
int shmid = shmget(key, sizeof(int), S_IRUSR | S_IWUSR); // less permissions
sharedval = (int *) shmat(shmid, NULL, 0);
*sharedval = 0;
ただし、その最後の行を 2 番目に実行すると、セグメンテーション違反が発生します。デバッグ時に、「sharedval」を出力すると、メモリ アドレスが取得されます。おそらく、取得したメモリ内の場所です。したがって、私がしなければならないことは*sharedval
、それを評価するために使用することだけだと思いますが、どうやらそうではありません。共有メモリから読み取るにはどうすればよいですか? 正しい方向へのプッシュは素晴らしいでしょう。ありがとう!
編集:
another.anon.coward の出力:
$ ./a.out
ftok: No such file or directory
shmget: No such file or directory
Trying shmget with IPC_CREAT
shmget success
shmat success
Segmentation fault: 11