データを含むファイルを共有メモリ セグメントに書き込もうとしています。ただし、私が試したことはすべて、セグメンテーション違反というエラーが発生するようです。私はインターネットで助けを求めて1日以上検索しています。
int main(int argc, char *argv[]).
{
int sm;
char *data;
int pid=atoi(argv[1]);
int key=atoi(argv[2]);
char (*d)[1025];
data=(char*) malloc(1025);
//put the data in the shared memory segment
FILE *file=fopen(argv[3], "r"); //r for read
if (file==0)
{printf("Could not open file");}
else
{
while(fgets(data, 1025, file)!=NULL)
{
fputs(data, file);
// puts(d);
}
fclose(file);
}
//access shared memory
//S_IWUSR gives owner the write permession
sm = shmget(key, 1024, S_IWUSR);
//create a pointer to the shared memory segment
d = shmat(sm, (void *)0, 0); //shared memory id, shmaddr, shmflg
//for (int j=0; j<100; j++)
strcpy(d[0], data);
shmdt(d); //detach the shared memory segment
//remove the shared memory segment
shmctl(sm, IPC_RMID, NULL);
}
どんな助けでも大歓迎です 事前に感謝します
編集:mallocを追加
EDIT2:質問を言い換える必要があるかもしれません。私の問題は、共有メモリにデータを取得することです