shmid; 说明:将由shmid指示的共享内存联接到调用进程的数据段中.被联接的
段放在地址,该地址由以下准则指定:
. 若shmaddr等于(void *)0,则段联接到由系统选择的第一个可
用的地址上.
. 若shmaddr不等于(void *)0同时(shmflg&SHM_RND)值为真,则
段联接到由(shmaddr-(shmaddr%SHMLBA))给出的地址上.
. 若shmaddr不等于(void *)0同时(shmflg&SHM_RND)值为假,则
段联接到由shmaddr指定的地址上.
若(shmflg&sSHM_RDONLY)为真并且调用进程有读允许,则被联接
的段为只读;否则,若值不为真且调用进程有读写权限,则被联接
的段为可读写的.
返回值:若调用成功则返回被联接的共享内存段在数据段上的启始地址.
否则返回值为-1.
18.shmdt()
功能:断开共享内存联接的操作.
语法:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
void *shmdt(shmaddr)
void *shmaddr;
说明:本系统调用将由shmaddr指定的共享内存段从调用进程的数据段
脱离出去.
返回值:若调用成功则返回值为0,否则返回值为-1.
19.shmget()
功能:取得共享内存段
语法:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key,size,shmflg)
key_t key;
int size,shmflg;
说明:本系统调用返回key相关的共享内存标识符.
共享内存标识符和相关数据结构及至少size字节的共享内存段能
正常创建,要求以下事实成立:
. 参数key等于IPC_PRIVATE.
. 参数key没有相关的共享内存标识符,同时(shmflg&IPC_CREAT)
值为真.
共享内存创建时,新生成的共享内存标识相关的数据结构被初始
化如下:
. shm_perm.cuid和shm_perm.uid设置为调用进程的有效UID.
. shm_perm.cgid和shm_perm.gid设置为调用进程的有效GID.
. shm_perm.mode访问权限比特位设置为shmflg访问权限比特位.
. shm_lpid,shm_nattch,shm_atime,shm_dtime设置为0.
. shm_ctime设置为当前系统时间.
. shm_segsz设置为0.
返回值:若调用成功则返回一个非0值,称为共享内存标识符,否则返回
值为-1.
20.shmctl()
功能:共享内存控制操作.
语法:#include <sys/types.h>
&nbs