shmctl
shmctl 刪除共用記憶體:
int shmctl( int shmid , int cmd , struct shmid_ds *buf );
int shmid:是共用記憶體的ID。
int cmd: 是控制命令,可取值如下:
IPC_STAT 得到共用記憶體的狀態,
IPC_SET 改變共用記憶體的狀態
IPC_RMID 刪除共用記憶體
struct shmid_ds *buf是一個結構體指標。IPC_STAT的時候,取得的狀態放在這個結構體中。如果要改變共用記憶體的狀態,用這個結構體指定。
傳回值: 成功:0失敗:-1
使用例子:
shmctl(shmid,IPC_RMID,NULL);
共用記憶體狀態結構體
include/linux/shm.h
struct shmid_ds
{
struct ipc_perm shm_perm; /* operation perms */
int shm_segsz; /* size of segment (bytes) */
__kernel_time_t shm_atime; /* last attach time */
__kernel_time_t shm_dtime; /* last detach time */
__kernel_time_t shm_ctime; /* last change time */
__kernel_ipc_pid_t shm_cpid; /* pid of creator */
__kernel_ipc_pid_t shm_lpid; /* pid of last operator */
unsigned short shm_nattch; /* no. of current attaches */
unsigned short shm_unused; /* compatibility */
void *shm_unused2; /* ditto - used by DIPC */
void *shm_unused3; /* unused */
};