tail head cat sleep
QR code linking to this page

manページ  — SHMCTL

名称

shmctl – 共有メモリ制御

内容

ライブラリ

Standard C Library (libc, -lc)

書式

#include <machine/param.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>

int
shmctl(int shmid, int cmd, struct shmid_ds *buf);

解説

shmid によって指定された共有メモリセグメント上で cmd によって指定された処理を実行します:
IPC_STAT struct shmid_ds のセグメントを取得し、 buf によって指定されたメモリにそれを保存します。
IPC_SET struct shmid_ds セグメントの shm_perm.uid, shm_perm.gid, および shm_perm.mode の各メンバを buf で指された構造体のメンバに変更します。 呼び出しプロセスの実効ユーザ ID は、 shm_perm.uid または shm_perm.cuid のどちらかと一致するか、またはスーパユーザ特権を持っている必要があります。
IPC_RMID システムからセグメントを除去します。 セグメントにアタッチしたすべてのプロセスが終了するまで、除去は行われません。 しかし、いったん IPC_RMID 操作が実行されると、それ以降プロセスは そのセグメントにアタッチすることを許されません。 操作が成功するためには、呼び出しプロセスの実効ユーザ ID が shm_perm.uid または shm_perm.cuid と一致するか、または呼び出しプロセスにスーパユーザ特権が必要です。

shmid_ds 構造体は次のように定義されます:

struct shmid_ds {
    struct ipc_perm shm_perm;   /* 操作パーミッション構造体 */
    int             shm_segsz;  /* セグメントのサイズ (バイト単位) */
    pid_t           shm_lpid;   /* 最後の共有メモリ操作のプロセス ID */
    pid_t           shm_cpid;   /* 作成者のプロセス ID  */
    short           shm_nattch; /* 現在のアタッチの数 */
    time_t          shm_atime;  /* 最後の shmat() の時刻 */
    time_t          shm_dtime;  /* 最後の shmdt() の時刻 */
    time_t          shm_ctime;  /* shmctl() による最後の変更の時刻 */
    void           *shm_internal; /* SystemV の愚行 */
};

戻り値

The shmctl function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

shmctl() システムコールは次の場合に処理に失敗します:
[EINVAL]
  無効な操作、または shmid に指定された共有メモリセグメントが検出されませんでした。
[EPERM]
  呼び出しプロセスの実効ユーザ ID が、共有メモリセグメントの所有者 または作成者のユーザ ID と一致しません。
[EACCES]
  操作と共有メモリセグメントモードの間の不一致のために パーミッションが拒絶されました。

関連項目

shmat(2), shmdt(2), shmget(2), ftok(3)

SHMCTL (2) July 17, 1995

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

You have successfully logged in, Now press any key to log out