我想在两个进程之间创建共享内存。我用了fork()。一个孩子试图改变这个共享的记忆,而母亲又创造了另一个孩子,所以新的孩子试图改变相同的记忆,依此类推。这是我的 C 编程代码。 (Ubuntu)
mylist ch=NUL;
f=fork();
if(!f){
pba=shmget(KEYSHM,sizeof(char),0); /*created shared memory*/
ch=(mylist *) shmat(pba,0,0);
ch->name=ugur;
ch->surname=cedric;
...do something...
}
else{
if(ch)
printf("this is top of mylist %s"ch->name);
.......do something
}
它从不写 ch->name。为什么?我创建了一个共享记忆。为什么父进程无法读取?
为了共享内存,父进程和子进程必须访问相同的共享内存。
你有两个选择,一个更简单,一个更难:
您需要分配超过 1 个字符的共享内存来存储有用的字符串,例如名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)