table of contents
other sections
SHMAT(2) | System Calls Manual | SHMAT(2) |
NAME¶
shmat, shmdt — attach or detach shared memoryLIBRARY¶
Standard C Library (libc, -lc)SYNOPSIS¶
#include <machine/param.h>#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h> void *
shmat(int shmid, const void *addr, int flag); int
shmdt(const void *addr);
DESCRIPTION¶
The shmat() system call attaches the shared memory segment identified by shmid to the calling process's address space. The address where the segment is attached is determined as follows:- If addr is 0, the segment is attached at an address selected by the kernel.
- If addr is nonzero and SHM_RND is not specified in flag, the segment is attached the specified address.
- If addr is specified and SHM_RND is specified, addr is rounded down to the nearest multiple of SHMLBA.
RETURN VALUES¶
Upon success, shmat() returns the address where the segment is attached; otherwise, -1 is returned and errno is set to indicate the error.The shmdt() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
ERRORS¶
The shmat() system call will fail if:- [
EINVAL
] - No shared memory segment was found corresponding to shmid.
- [
EINVAL
] - The addr argument was not an acceptable address.
- [
EINVAL
] - The addr argument does not point to a shared memory segment.
SEE ALSO¶
shmctl(2), shmget(2)August 2, 1995 | Debian |