??
字號:
//shmwrite.c
/************************************************************
* 用共享內(nèi)存區(qū)的方法實現(xiàn)進(jìn)程間通信的例子
* example2-07.c example2-08.c example2-09.c example2-10.c
************************************************************/
/************************************************************
* 本例向指定的共享內(nèi)存區(qū)寫入信息 example2-08.c
************************************************************/
/************************************************************
* 用shmget()打開指定的共享內(nèi)存區(qū)后,
* 由shmat()把該內(nèi)存區(qū)附接到當(dāng)前進(jìn)程的地址空間。
* 共享內(nèi)存區(qū)的大小由IPC_STAT命令調(diào)用shmctl得到。
* 在for循環(huán)中,給指定的共享內(nèi)存區(qū)寫入數(shù)據(jù)。
************************************************************/
#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); //創(chuàng)建共享內(nèi)存區(qū)
ptr = shmat(id, NULL, 0); //把該共享內(nèi)存區(qū)附接到到當(dāng)前進(jìn)程的地址空間
shmctl(id, IPC_STAT, &buff);
//由IPC_STAT取得共享內(nèi)存區(qū)的shmid_ds結(jié)構(gòu),并存到buff指定的地址。
for (i = 0; i < buff.shm_segsz; i++) //向指定的共享內(nèi)存區(qū)寫入數(shù)據(jù)
*ptr++ = i;
exit(0);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -