-1
次のコードは、共有メモリを作成するために常に返されます。その理由はわかりません。私の知る限り、私のコードは正しいです。Perror returns not such file or directory
。何を指しているのかわかりませんが、このファイルとヘッダーは同じディレクトリにあります。コードは次のとおりです。
#include "MyShared.h"
int main()
{
struct MyShared *obj;
int shmid,i,childpid;
shmid=shmget(MySharedKey,sizeof(struct MyShared),PERM);
if(shmid==-1)
printf("Failed to create shared mem\n");
obj=(struct MyShared*)shmat(shmid,NULL,0);
obj->ReadFromBuf=0;
....
}
これがヘッダーファイルです。My Shared.h
#ifndef MYSHARED_H_INCLUDED
#define MYSHARED_H_INCLUDED
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#define PERM (S_IRWXU | S_IRGRP)
#define MySharedKey 564732
#define SIZE 512 // 512 bytes
struct MyShared
{
char buf[SIZE];
int ReadFromBuf,WriteToBuf,readbytes;
};
#endif
このコードで共有メモリを作成できないのはなぜですか?
私はubuntu10.04を使用しています。
私はフォローUnix System programming by Stevens
していますが、共有メモリの作成権限については何も述べていません。
よろしく