我正在嘗試使用數據將文件寫入我的共享內存段。然而,我所嘗試的一切似乎只是爲了給錯誤分段錯誤。我一直在搜索互聯網尋求更多的一天的幫助。無法將數據添加到共享內存中
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:也許我應該改一下我的問題,我的問題是數據進入我的共享內存
你有沒有打過它?哪條線完全失敗? – giorashc
我認爲這是strcpy行失敗,至少我嘗試將數據添加到共享內存失敗 – gudnylara7
你有沒有注意到char(* d)[1025]是一個指向1025個字符數組的指針你的意思是char d [1025]這是一個已經分配的1025個字符的數組)。作爲@benjarobin提到你的數據沒有分配 – giorashc