SYSTEM CALL: shmat();
PROTOTYPE: int shmat ( int shmid, char *shmaddr, int shmflg);
RETURNS: address at which segment was attached to the process, or
-1 on error: errno = EINVAL (Invalid IPC ID value or attach address passed)
ENOMEM (Not enough memory to attach segment)
EACCES (Permission denied)
NOTES:
此外,如果将 SHM_RDONLY 标志与 flag 参数进行 OR 运算,则共享内存段将被映射进来,但标记为只读。
这个调用可能是最简单的用法。 考虑一下这个包装函数,它传递一个段的有效 IPC 标识符,并返回该段附加到的地址。
char *attach_segment( int shmid )
{
return(shmat(shmid, 0, 0));
}