📄 example2-09.c
字号:
//shmread.c
/************************************************************
* 用共享内存区的方法实现进程间通信的例子
* example2-07.c example2-08.c example2-09.c example2-10.c
************************************************************/
/************************************************************
* 本例从指定的消息队列中读取数据 example2-09.c
************************************************************/
/************************************************************
* 用shmget()打开指定的共享内存区后,
* 由shmat()把该内存区附接到当前进程的地址空间。
* 共享内存区的大小由IPC_STAT命令调用shmctl得到。
* 在for循环中,读取共享内存区中的数据。
************************************************************/
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define SVSHM_MODE (SHM_R | SHM_W | SHM_R >> 3 | SHM_R >> 6)
int
main(int argc, char ** argv)
{
int i, id;
struct shmid_ds buff;
unsigned char c, *ptr;
if (argc != 2)
printf("usage: shmread <pathname>\n");
id = shmget(ftok(argv[1], 0), 0, SVSHM_MODE);
ptr = shmat(id, NULL, 0);
shmctl(id, IPC_STAT, &buff);
for (i = 0; i < buff.shm_segsz; i++)
if ( (c = *ptr++) != i)
printf("ptr[%d] = %d", i, c);
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -