JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... り、その値は決して 0 未満になることは許されない。 セマフォに対してできる操作は 2 つである: セマフォ値を 1 増やす ( sem_post (3)); セマフォ値を 1 減らす ( sem_wait (3))。 セマフォの値 ... がすでに 0 の場合、セマフォ値が 0 より大きくなるまで sem_wait (3) 操作は停止 (block) する。 POSIX セマフォには、名前付きセマフォ (named semaphore) と 名 ... 前なしセマフォ (unnamed semaphore) の 2つの形がある。 名前付きセマフォ 名前付きセマフォは /somename という形式の名前で識別される。 その名 ... ... mnum , int cmd , ...); 説明 semctl () は、 semid で指定された System V セマフォ集合 (semaphore set) またはセマフォ集合の semnun 番目のセマフォに対して、 cmd で指定された制御操作を行なう (集合内のセマフォ ... op の時刻 */ time_t sem_ctime; /* 作成時刻/semctl() により 最後に変更が行われた時刻 */ unsigned long sem_nsems; /* 集合内のセマフォの数 */ }; The fields of the semid_ds structure are as follows: sem_perm This is an ipc_perm structure (see below) that spec ... ネルデータ構造体の情報を arg.buf で指された semid_ds 構造体へコピーする。 semnum 引数は無視される。 呼び出したプロセスはそのセマフォ集合に対する 読み込み許可を持たなければならない。 IPC_SET Write the values of some members of the semid_ds structure pointed ... ... ec * timeout ); glibc 向けの機能検査マクロの要件 ( feature_test_macros (7) 参照): semtimedop (): _GNU_SOURCE 説明 System V セマフォ集合 (semaphore set) のメンバーの各セマフォは 以下の関連情報を持っている: unsigned short semval; /* semaphore value */ unsig ... signed short semncnt; /* # waiting for increase */ pid_t sempid; /* PID of process that last semop () は semid で指定されたセマフォ集合の選択されたセマフォに対して操作を行う。 sops は nsops 個の要素の配列を指し、配列の各要素は個々のセマフォに対する操作を示 ... す構造体である。その型は struct sembuf で、次のメンバを持つ: unsigned short sem_num; /* セマフォ番号 */ short sem_op; /* セマフォ操作 */ short sem_flg; /* 操作フラグ */ sem_flg には IPC_NOWAIT と SEM_UNDO が設定できる。 ... ... ec * timeout ); glibc 向けの機能検査マクロの要件 ( feature_test_macros (7) 参照): semtimedop (): _GNU_SOURCE 説明 System V セマフォ集合 (semaphore set) のメンバーの各セマフォは 以下の関連情報を持っている: unsigned short semval; /* semaphore value */ unsig ... signed short semncnt; /* # waiting for increase */ pid_t sempid; /* PID of process that last semop () は semid で指定されたセマフォ集合の選択されたセマフォに対して操作を行う。 sops は nsops 個の要素の配列を指し、配列の各要素は個々のセマフォに対する操作を示 ... す構造体である。その型は struct sembuf で、次のメンバを持つ: unsigned short sem_num; /* セマフォ番号 */ short sem_op; /* セマフォ操作 */ short sem_flg; /* 操作フラグ */ sem_flg には IPC_NOWAIT と SEM_UNDO が設定できる。 ... ... TE ), or to create a new set. key の値が IPC_PRIVATE の場合、もしくは semflg に IPC_CREAT が指定されていて、 key に対応するセマフォ集合が存在しない場合、 nsems 個のセマフォからなる新しい集合が作成される。 semflg に IPC_CREAT と IPC_EXCL の両方が指定された ... 場合、 key に対応するセマフォ集合が既に存在すると、 semget () は失敗し、 errno に EEXIST が設定される (これは open (2) に O_CREAT | O_EXCL が指定された場 ... 合の動作と同じである)。 セマフォ集合作成時に、引数 semflg の下位 9 ビットは、そのセマフォ集合の (所有者 (owner)、グループ (group)、 他人 (others) に対する) ... ... st char * name , int oflag , mode_t mode , unsigned int value ); -pthread とリンクする。 説明 sem_open () は、新規の POSIX セマフォを作成するか、既存のセマフォのオープンを行う。 セマフォは name で識別される。 name の構成の詳細は sem_overview (7) を参照。 ... (oflag の値の定義は < fcntl.h > のインクルードにより得られる)。 oflag に O_CREAT が指定されると、まだ存在しない場合にはそのセマフォが作成される。 セマフォの所有者 (ユーザー ID)、グループ所有権 (グループ ID) には、 それぞれ呼び出し元プロセスの実効 UID、実効 ... GID が設定される。 oflag に O_CREAT と O_EXCL の両方が指定された場合、指定された名前 name のセマフォがすでに存在するとエラーが返される。 oflag に O_CREAT を指定する場合、さらに引数が 2 つ必要である。 mode 引数は、 open (2) と ... ... クする。 説明 sem_init () は、 sem が指すアドレスにある名前なしセマフォを初期化する。 value 引数はそのセマフォの初期値を指定する。 pshared 引数は、このセマフォがプロセス内のスレッド間で共有される ... のか、 プロセス間で共有されるのか、を示す。 pshared が 0 の場合、セマフォはプロセス内のスレッド間で共有される。 セマフォはすべてのスレッドから参照可能なアドレスに配置すべきである (例えば、大域変数や ... 、ヒープ上に動的に割り当てられた変数など)。 pshared が 0 以外の場合、セマフォはプロセス間で共有される。セマフォは 共有メモリー領域に配置すべきである ( shm_open (3), mmap (2), shmget (2) 参照)。 ( fork ... ... 検査マクロの要件 ( feature_test_macros (7) 参照): sem_timedwait (): _POSIX_C_SOURCE >= 200112L 説明 sem_wait () は sem が指すセマフォの値を 1 減らす (ロックする)。 セマフォの値が 0 より大きい場合、減算が実行され、関数は直ちに復帰する。 セマフォの現在値が 0 ... の場合には、減算を実行できるようになる (つまり、セマフォの値が 0 より大きな値になる) まで、もしくは シグナルハンドラーによって呼び出しが中断されるまで、 関数呼び出しは停止 (block) ... する。 sem_trywait () は sem_wait () と同じだが、セマフォ値の減算をすぐに実行できなかった場合に、 停止 (block) するのではなくエラーで復帰する ( errno に EAGAIN がセットされる) 点が異 ... ... 検査マクロの要件 ( feature_test_macros (7) 参照): sem_timedwait (): _POSIX_C_SOURCE >= 200112L 説明 sem_wait () は sem が指すセマフォの値を 1 減らす (ロックする)。 セマフォの値が 0 より大きい場合、減算が実行され、関数は直ちに復帰する。 セマフォの現在値が 0 ... の場合には、減算を実行できるようになる (つまり、セマフォの値が 0 より大きな値になる) まで、もしくは シグナルハンドラーによって呼び出しが中断されるまで、 関数呼び出しは停止 (block) ... する。 sem_trywait () は sem_wait () と同じだが、セマフォ値の減算をすぐに実行できなかった場合に、 停止 (block) するのではなくエラーで復帰する ( errno に EAGAIN がセットされる) 点が異 ... ... () は、 name で参照される名前付きセマフォを削除する。 セマフォの名前は直ちに削除される。 このセマフォをオープンしている他のすべてのプロセスがセマフォを 閉じて初めてセ ... sem_unlink () は 0 を返す。エラーの場合、-1 を返し、 errno にエラーを示す値をセットする。 エラー EACCES 呼び出し元にはこのセマフォを削除する許可がない。 ENAMETOOLONG name が長すぎる。 ENOENT 指定された名前 name のセマフォが存在しない。 属性 この節で使用さ ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。