- 论坛徽章:
- 0
|
关于 系统 V 共享内存 shmat 返回的值的确定:
网络通信 卷二 : shmat 返回值是所指定的共享内存在调用的进程的起始地址。
但是我还是看不明白。
比如 2个 进程调用了 共享内存 ,打印出来的 返回值不一样的
但是 如果 用 GBD 调试 这2个进程 显示的地址 是一样的
(gdb) n
17 ilShmid = atoi(argv[1]);
(gdb) n
19 if((ptr = shmat(ilShmid,NULL,0))<0)
(gdb) n
27 printf ("ptr==[%x]\n",ptr);
(gdb) n
ptr==[b7ffe000] // shmat 返回值
28 printf("read from shmmap --> \n %.1024s\n ",ptr);
(gdb) n
read from shmmap -->
123456helloworld
2个进程都是 打印的 b7ffe000
。
第2个问题
p=(P *)shmat(shmid, (char *)0, SHM_RND); // p 为结构体指针
这句话, 他的返回值,如何确定的! 这样做的目的是什么?
看书 实在有点不明白, 用 gdb 调试 也有点迷糊~~
希望 师傅 们 帮忙 指导一下
|
|