我只想测试 shmget() 和 shmat() ,但似乎有问题。:(
shmget() 效果很好,但 shmat() 会导致分段错误。
这是代码:
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <errno.h>
int main(void)
{
key_t key=98;/* yes, just 98 for test */
int shid;
char *str=NULL;
shid = shmget(key, 4096, IPC_CREAT);
printf("shid:%d\n",shid);
str=(char*)shmat(shid,NULL,0);
printf("str:%d\n",(int)str);
printf("errno:%d\n", errno);
str[0] = 'h';
str[1] = '\0';
return 0;
}
这是输出:
shid:28246036
str:-1
errno:13
zsh: segmentation fault ./t1
谢谢:D