我有一个包含两个进程和两个文件的程序,我想用共享内存读取第二个文件的代码的var,但我只得到"测试"字,而不是文本.程序的第一个文件的代码:
a=shmget(key, 200, 0666|IPC_CREAT);
text=(char *)shmat(a,0,0);
text=&words[0];
if ((P2=fork())==1)
{
perror("fork");
exit(-1);
}
if (P2==0)
{
execl("prog2","prog2",NULL);
}
Run Code Online (Sandbox Code Playgroud)
和第二个文件的代码:
a=shmget(key, 200, 0666);
text=shmat(a,0,SHM_RDONLY);
printf("testing, %s", text);
Run Code Online (Sandbox Code Playgroud)
任何的想法?谢谢.
你永远不会把任何东西放在共享内存中; 你只是将值text改为指向共享内存以外的东西.
代替:
text=&words[0];
Run Code Online (Sandbox Code Playgroud)
你可能想要这样的东西:
memcpy(text, &words[0], strlen(words[0]) + 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |