共享内存的初始化

2024-12-03 07:54:03
推荐回答(1个)
回答1:

shmid_ds结构数据 初 值 shmid_ds结构数据 初 值 shm_lpid 0 shm_dtime 0 shm_nattach 0 shm_ctime 系统当前值 shm_atime 0 shm_segsz 参数 size 下面实例演示了使用shmget函数创建一块共享内存。程序中在调用shmget函数时指定key参数值为IPC_PRIVATE,这个参数的意义是创建一个新的共享内存区,创建成功后使用shell命令ipcs来显示系统下共享内存的状态。命令参数-m为只显示共享内存的状态。
(1)在vi编辑器中编辑该程序如下:
程序清单14-8 create_shm.c 使用shmget函数创建共享内存
#include
#include
#include
#include
#include
#define BUFSZ 4096
int main ( void )
{
int shm_id; /*共享内存标识符*/
shm_id=shmget(IPC_PRIVATE, BUFSZ, 0666 ) ;
//shm_id=shmget(999,BUFSZ,0666|O_CREAT);
if (shm_id < 0 ) { /*创建共享内存*/
perror( shmget ) ;
exit ( 1 );
}
printf ( successfully created segment : %d \n, shm_id ) ;
system( ipcs -m); /*调用ipcs命令查看IPC*/
exit( 0 );
}
(2)在shell中编译该程序如下:
$gcc create_shm.c -o create_shm
(3)在shell中运行该程序如下:
$./ create_shm
successfully created segment : 2752516
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0000000 66root 600 393216 2 dest
0x00000 5209root 666 4096 0
0x0056a4d5 2686978 root 600 488 1
0x0056a4d6 2719747 root 600 131072 1
root 666 4096 0
上述程序中使用shmget函数来创建一段共享内存,并在结束前调用了系统shell命令ipcs –m来查看当前系统IPC状态。