📄 example2-08.c
字号:
//shmwrite.c
/************************************************************
* 用共享内存区的方法实现进程间通信的例子
* example2-07.c example2-08.c example2-09.c example2-10.c
************************************************************/
/************************************************************
* 本例向指定的共享内存区写入信息 example2-08.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 *ptr;
if (argc != 2)
printf("usage: shmwrite <pathname>\n");
id = shmget(ftok(argv[1], 0), 0, SVSHM_MODE); //创建共享内存区
ptr = shmat(id, NULL, 0); //把该共享内存区附接到到当前进程的地址空间
shmctl(id, IPC_STAT, &buff);
//由IPC_STAT取得共享内存区的shmid_ds结构,并存到buff指定的地址。
for (i = 0; i < buff.shm_segsz; i++) //向指定的共享内存区写入数据
*ptr++ = i;
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -