semop

Autres langues

Langue: ja

Version: 2004-11-10 (openSuse - 09/10/07)

Section: 2 (Appels système)

̾Á°

semop, semtimedop - ¥»¥Þ¥Õ¥©¤ÎÁàºî

½ñ¼°


#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/sem.h>



int semop(int semid, struct sembuf *sops, unsigned nsops);



int semtimedop(int semid, struct sembuf *sops, unsigned nsops,

               struct timespec *timeout);

ÀâÌÀ

¥»¥Þ¥Õ¥©½¸¹ç (semaphore set) ¤Î¥á¥ó¥Ð¡¼¤Î³Æ¥»¥Þ¥Õ¥©¤Ï °Ê²¼¤Î´ØÏ¢¾ðÊó¤ò»ý¤Ã¤Æ¤¤¤ë:

unsigned short  semval;   /* ¥»¥Þ¥Õ¥©ÃÍ */

unsigned short  semzcnt;  /* ¥¼¥í¤òÂÔ¤Ä¥×¥í¥»¥¹¿ô */

unsigned short  semncnt;  /* Áý²Ã¤òÂÔ¤Ä¥×¥í¥»¥¹¿ô */

pid_t           sempid;   /* ºÇ¸å¤ËÁàºî¤ò¹Ô¤Ê¤Ã¤¿¥×¥í¥»¥¹ */



semop() ¤Ï semid ¤Ç»ØÄꤵ¤ì¤¿¥»¥Þ¥Õ¥©½¸¹ç¤ÎÁªÂò¤µ¤ì¤¿¥»¥Þ¥Õ¥©¤ËÂФ·¤ÆÁàºî¤ò¹Ô¤¦¡£ sops ¤Ï nsops ¸Ä¤ÎÍ×ÁǤÎÇÛÎó¤ò»Ø¤·¡¢ÇÛÎó¤Î³ÆÍ×ÁǤϸġ¹¤Î¥»¥Þ¥Õ¥©¤Ë ÂФ¹¤ëÁàºî¤ò¼¨¤¹¡£¤½¤Î·¿¤Ï struct sembuf ¤Ç¡¢¼¡¤Î¥á¥ó¥Ð¤ò»ý¤Ä:

unsigned short sem_num;  /* ¥»¥Þ¥Õ¥©ÈÖ¹æ */

short          sem_op;   /* ¥»¥Þ¥Õ¥©Áàºî */

short          sem_flg;  /* Áàºî¥Õ¥é¥° */



sem_flg ¤Ë¤Ï IPC_NOWAIT ¤È SEM_UNDO ¤¬ÀßÄê¤Ç¤­¤ë¡£ SEM_UNDO ¤¬»ØÄꤵ¤ì¤¿Áàºî¤Ï¡¢¤½¤Î¥×¥í¥»¥¹¤¬½ªÎ»¤·¤¿»þ¤Ë¼«Æ°Åª¤Ë¼è¤ê¾Ã¤µ¤ì¤ë¡£

sops ¤Ë´Þ¤Þ¤ì¤ëÁàºî¤Î½¸¹ç¤Ï¡¢ ÇÛÎó¤Î½ç½ø ¤Ç¡¢ ¥¢¥È¥ß¥Ã¥¯¤Ë ¼Â¹Ô¤µ¤ì¤ë¡£ ¤¹¤Ê¤ï¤Á¡¢Á´¤Æ¤ÎÁàºî¤¬´°Á´¤Ë¼Â¹Ô¤µ¤ì¤ë¤«¡¢Á´¤¯¼Â¹Ô¤µ¤ì¤Ê¤¤¤«¤Î ¤É¤Á¤é¤«¤È¤Ê¤ë¡£

Á´¤Æ¤ÎÁàºî¤¬Ä¾¤Á¤Ë¼Â¹Ô¤Ç¤­¤Ê¤¤¾ì¹ç¤Î¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î¿¶¤ëÉñ¤¤¤Ï ¸Ä¡¹¤ÎÁàºî¤Î sem_flg ¥Õ¥£¡¼¥ë¥É¤Ë IPC_NOWAIT ¤¬Â¸ºß¤¹¤ë¤«¤Ë¤è¤Ã¤Æ·è¤Þ¤ê¡¢¸å½Ò¤Î¤è¤¦¤Ë¤Ê¤ë¡£

¤½¤ì¤¾¤ì¤ÎÁàºî¤Ï¥»¥Þ¥Õ¥©½¸¹ç¤Î sem_numÈÖÌÜ ¤Î¥»¥Þ¥Õ¥©¤ËÂФ·¤Æ¼Â¹Ô¤µ¤ì¤ë¡£¥»¥Þ¥Õ¥©½¸¹ç¤ÎºÇ½é¤Î¥»¥Þ¥Õ¥©¤Ë¤Ï ÈÖ¹æ 0 ¤¬¿¶¤é¤ì¤ë¡£ ¤½¤·¤ÆÁàºî¤Ï»°¼ïÎढ¤ê¡¢ sem_op ¤ÎÃͤǶèÊ̤µ¤ì¤ë¡£

sem_op ¤¬Àµ¤ÎÀ°¿ô¤Î¾ì¹ç¡¢Áàºî¤È¤·¤Æ¤½¤ÎÃͤò¥»¥Þ¥Õ¥©¤ÎÃÍ (semval) ¤Ë²Ã¤¨¤ë¡£¤µ¤é¤Ë¤³¤ÎÁàºî¤Ë SEM_UNDO ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥·¥¹¥Æ¥à¤Ï¤³¤Î¥»¥Þ¥Õ¥©¤Î ¥×¥í¥»¥¹¡¦¥¢¥ó¥É¥¥¿ô (semadj) ¤ò¹¹¿·¤¹¤ë¡£ ¤³¤ÎÁàºî¤Ïɬ¤º¼Â¹Ô¤Ç¤­¡¢¥×¥í¥»¥¹¤ÎÄä»ß¤Ïµ¯¤³¤é¤Ê¤¤¡£ ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤ÏÂоݤΥ»¥Þ¥Õ¥©½¸¹ç¤òÊѹ¹¤¹¤ëµö²Ä¤¬¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

sem_op ¤¬ 0 ¤Î¾ì¹ç¡¢¡Ö¥¼¥í¤Þ¤ÇÂԤġ×Áàºî¤Ç¤¢¤ë¡£¤³¤Î¾ì¹ç¡¢¥×¥í¥»¥¹¤Ï ¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤ËÂФ¹¤ëÆɤ߹þ¤ßµö²Ä¤¬¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ semval ¤¬ 0 ¤Ê¤é¤Ð¡¢Áàºî¤Ïľ¤Á¤Ë¹Ô¤ï¤ì¤ë¡£ semval ¤¬ 0 ¤Ç¤Ê¤¤¾ì¹ç¡¢ sem_flg ¤Ë IPC_NOWAIT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢ semop() ¤Ï¼ºÇÔ¤·¡¢ errno ¤Ë EAGAIN ¤¬ÀßÄꤵ¤ì¤ë (¤³¤Î¤È¤­ sops ¤ËÂФ¹¤ëÁàºî¤ÏÁ´¤¯¼Â¹Ô¤µ¤ì¤Ê¤¤)¡£ sem_flg ¤Ë IPC_NOWAIT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢ semzcnt (¥»¥Þ¥Õ¥©Ãͤ¬ 0 ¤Ë¤Ê¤ë¤Î¤òÂԤäƤ¤¤ë¥×¥í¥»¥¹¤Î¿ô) ¤ò 1 Áý²Ã¤µ¤»¤Æ¡¢ °Ê²¼¤Î¤¤¤º¤ì¤«¤¬µ¯¤³¤ë¤Þ¤Ç¥×¥í¥»¥¹¤òÄä»ß (sleep) ¤¹¤ë¡£

*
semval ¤¬ 0 ¤Ë¤Ê¤Ã¤¿: ¤³¤Î¤È¤­ semval ¤ÎÃÍ¤Ï 1 ¸º»»¤µ¤ì¤ë¡£
*
¥»¥Þ¥Õ¥©½¸¹ç¤¬ºï½ü¤µ¤ì¤¿: ¤³¤Î¤È¤­ semop() ¤Ï¼ºÇÔ¤·¡¢ errno ¤Ë EIDRM ¤¬ÀßÄꤵ¤ì¤ë¡£
*
¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿: ¤³¤Î¤È¤­ semzcnt ¤ÎÃÍ¤Ï 1 ¸º»»¤µ¤ì¡¢ semop() ¤Ï¼ºÇÔ¤· errno ¤Ë EINTR ¤¬ÀßÄꤵ¤ì¤ë¡£
*
semtimedop() ¤Î timeout ¤Ç»ØÄꤵ¤ì¤¿À©¸Â»þ´Ö¤¬·Ð²á¤·¤¿: ¤³¤Î¤È¤­ semtimedop() ¤Ï¼ºÇÔ¤·¡¢ errno ¤Ë EAGAIN ¤¬ÀßÄꤵ¤ì¤ë¡£

sem_op ¤¬ 0 ̤Ëþ¤Î¾ì¹ç¡¢¥×¥í¥»¥¹¤Ë¤Ï¤½¤Î¥»¥Þ¥Õ¥©½¸¹ç¤òÊѹ¹¤¹¤ëµö²Ä¤¬¤Ê¤±¤ì¤Ð ¤Ê¤é¤Ê¤¤¡£ semval ¤¬ sem_op ¤ÎÀäÂÐÃͰʾå¤Î¾ì¹ç¤Ï¡¢Áàºî¤Ïľ¤Á¤Ë¼Â¹Ô¤µ¤ì¤ë: semval ¤«¤é sem_op ¤ÎÀäÂÐÃͤ¬¸º»»¤µ¤ì¤ë¡£ ¤µ¤é¤Ë¡¢¤³¤ÎÁàºî¤Ë SEM_UNDO ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤³¤Î¥»¥Þ¥Õ¥©¤Î¥×¥í¥»¥¹¡¦¥¢¥ó¥É¥¥¿ô (semadj) ¤ò¹¹¿·¤¹¤ë¡£ semval ¤¬ sem_op ¤ÎÀäÂÐÃͤè¤ê¾®¤µ¤¯¡¢ sem_flg ¤Ë IPC_NOWAIT ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï¡¢ semop() ¤Ï¼ºÇÔ¤·¡¢ errno ¤Ë EAGAIN ¤¬ÀßÄꤵ¤ì¤ë (¤³¤Î¤È¤­ sops ¤ÎÁàºî¤ÏÁ´¤¯¼Â¹Ô¤µ¤ì¤Ê¤¤)¡£ IPC_WAIT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ semncnt (¤³¤Î¥»¥Þ¥Õ¥©¤ÎÃͤ¬Áý²Ã¤¹¤ë¤Î¤òÂԤäƤ¤¤ë¥×¥í¥»¥¹¿ô¤Î¥«¥¦¥ó¥¿) ¤ò 1 Áý²Ã¤µ¤»¤Æ¡¢°Ê²¼¤Î¤¤¤º¤ì¤«¤¬µ¯¤³¤ë¤Þ¤Ç¥×¥í¥»¥¹¤òÄä»ß (sleep) ¤¹¤ë¡£

*
semval ¤¬ sem_op ¤ÎÀäÂÐÃͰʾå¤Ë¤Ê¤Ã¤¿: ¤³¤Î¤È¤­ semncnt ¤¬ 1 ¸º»»¤µ¤ì¡¢ semval ¤«¤é sem_op ¤ÎÀäÂÐÃͤ¬°ú¤«¤ì¤ë¡£ ¤³¤ÎÁàºî¤Ë SEM_UNDO ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç¤Ë¤Ï¤³¤Î¥»¥Þ¥Õ¥©¤Î¥×¥í¥»¥¹¡¦¥¢¥ó¥É¥¥¿ô (semadj) ¤â¹¹¿·¤¹¤ë¡£
*
¥»¥Þ¥Õ¥©½¸¹ç¤¬¥·¥¹¥Æ¥à¤«¤éºï½ü¤µ¤ì¤¿: ¤³¤Î¤È¤­ semop() ¤Ï¼ºÇÔ¤· errno ¤Ë EIDRM ¤¬ÀßÄꤵ¤ì¤ë¡£
*
¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿: ¤³¤Î¤È¤­ semncnt ¤¬ 1 ¸º»»¤µ¤ì¡¢ semop() ¤Ï¼ºÇÔ¤· errno ¤Ë EINTR ¤¬ÀßÄꤵ¤ì¤ë¡£
*
semtimedop() ¤Î timeout ¤Ç»ØÄꤵ¤ì¤¿À©¸Â»þ´Ö¤¬·Ð²á¤·¤¿: ¤³¤Î¤È¤­ semtimedop() ¤Ï¼ºÇÔ¤·¡¢ errno ¤Ë EAGAIN ¤¬ÀßÄꤵ¤ì¤ë¡£

Áàºî¤¬À®¸ù¤·¤¿¾ì¹ç¡¢ sops ¤¬»Ø¤¹ÇÛÎó¤Ë¤è¤Ã¤ÆÁàºîÂоݤȤʤ俳ƥ»¥Þ¥Õ¥©¤Î sempid ¥á¥ó¥Ð¡¼¤Ë¤Ï¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ ID ¤¬ÀßÄꤵ¤ì¤ë¡£ ¤µ¤é¤Ë sem_otime ¤Ë¸½ºß»þ¹ï¤¬ÀßÄꤵ¤ì¤ë¡£

semtimedop() ´Ø¿ô¤Î¿¶¤ëÉñ¤¤¤Ï semop() ¤ÈÁ´¤¯Æ±¤¸¤À¤¬¡¢ ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬Ää»ß¤¹¤ë¾ì¹ç¡¢Ää»ß´ü´Ö¤Î¾å¸Â¤¬ timeout °ú¤­¿ô¤Î»Ø¤¹ timespec ¹½Â¤ÂΤǻØÄꤵ¤ì¤¿»þ´Ö¤È¤Ê¤ëÅÀ¤À¤±¤¬°Û¤Ê¤ë¡£ »ØÄꤷ¤¿À©¸Â»þ´Ö¤Ë㤷¤¿¾ì¹ç¤Ï¡¢ semtimedop() ¤Ï¼ºÇÔ¤·¡¢ errno ¤Ë EAGAIN ¤¬ÀßÄꤵ¤ì¤ë (¤³¤Î¤È¤­ sops ¤ÎÁàºî¤Ï¼Â¹Ô¤µ¤ì¤Ê¤¤)¡£ timeout °ú¤­¿ô¤¬ NULL ¤Î¾ì¹ç¡¢ semtimedop() ´Ø¿ô¤Î¿¶¤ëÉñ¤¤¤Ï semop() ´Ø¿ô¤ÈÁ´¤¯Æ±¤¸¤Ë¤Ê¤ë¡£

ÊÖ¤êÃÍ

À®¸ù¤·¤¿¾ì¹ç¡¢ semop() ¤È semtimedop() ¤Ï 0 ¤òÊÖ¤¹¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð -1 ¤òÊÖ¤·¡¢ ¥¨¥é¡¼¤ò¼¨¤¹ errno ¤òÀßÄꤹ¤ë¡£

¥¨¥é¡¼

¼ºÇÔ¤·¤¿¾ì¹ç¡¢ errno ¤Ë°Ê²¼¤Î¤É¤ì¤«¤¬ÀßÄꤵ¤ì¤ë:
E2BIG
nsops °ú¤­¿ô¤¬ SEMOPM ¤è¤êÂ礭¤¤¡£ SEMOPM ¤Ï°ì²ó¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Çµö¤µ¤ì¤ëÁàºî¤ÎºÇÂç¸Ä¿ô¤Ç¤¢¤ë¡£
EACCES
¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ë¤Ï»ØÄꤵ¤ì¤¿¥»¥Þ¥Õ¥©Áàºî¤ò¹Ô¤¦¤Î¤Ë ɬÍפʥ¢¥¯¥»¥¹µö²Ä¤¬¤Ê¤¯¡¢ CAP_IPC_OWNER ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤â¤Ê¤¤¡£
EAGAIN
Áàºî¤òľ¤Á¤Ë½èÍý¤¹¤ë¤³¤È¤¬¤Ç¤­¤º¡¢¤«¤Ä sem_flg ¤Ë IPC_NOWAIT ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤« timeout ¤Ç»ØÄꤵ¤ì¤¿À©¸Â»þ´Ö¤¬·Ð²á¤·¤¿¡£
EFAULT
sops ¤Þ¤¿¤Ï timeout ¤¬»Ø¤·¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡£
EFBIG
¤¢¤ëÁàºî¤Ç¡¢ sem_num ¤ÎÃͤ¬ 0 ̤Ëþ¤«¡¢½¸¹çÆâ¤Î¥»¥Þ¥Õ¥©¤Î¿ô°Ê¾å¤Ç¤¢¤ë¡£
EIDRM
¥»¥Þ¥Õ¥©½¸¹ç¤¬ºï½ü¤µ¤ì¤¿¡£
EINTR
¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÇÄä»ß¤·¤Æ¤¤¤ë»þ¤Ë¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿¡£
EINVAL
¥»¥Þ¥Õ¥©½¸¹ç¤¬Â¸ºß¤·¤Ê¤¤¤«¡¢ semid ¤¬ 0 ̤Ëþ¤Ç¤¢¤ë¤«¡¢ nsops ¤¬Àµ¤Î¿ô¤Ç¤Ê¤¤¡£
ENOMEM
¤¢¤ëÁàºî¤Ç sem_flg ¤Ë SEM_UNDO ¤¬»ØÄꤵ¤ì¤¿¤¬¡¢¥·¥¹¥Æ¥à¤Ë¥¢¥ó¥É¥¥¹½Â¤ÂΤ˳ä¤êÅö¤Æ¤ë½½Ê¬¤Ê¥á¥â¥ê¤¬¤Ê¤¤¡£
ERANGE
¤¢¤ëÁàºî¤Ç sem_op+semval ¤¬ SEMVMX ¤è¤êÂ礭¤¤¡£ SEMVMX ¤Ï semval ¤ÎºÇÂçÃͤǡ¢¤½¤ÎÃͤϼÂÁõ°Í¸¤Ç¤¢¤ë¡£

½àµò

SVr4, POSIX.1-2001.

Ãí°Õ

¤¢¤ë¥×¥í¥»¥¹¤Î sem_undo ¹½Â¤ÂÎ¤Ï fork(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î¾ì¹ç¤Ë¤Ï»Ò¥×¥í¥»¥¹¤Ë¤Ï·Ñ¾µ¤µ¤ì¤Ê¤¤¤¬¡¢ execve(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î¾ì¹ç¤Ï·Ñ¾µ¤µ¤ì¤ë¡£

semop() ¤Ï¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Ë¤è¤Ã¤ÆÃæÃǤµ¤ì¤¿¸å¤Ë¡¢ ·è¤·¤Æ¼«Æ°Åª¤ËºÆ³«¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡£ ¤¿¤È¤¨¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ÎÀßÄê»þ¤Ë SA_RESTART ¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Æ¤âºÆ³«¤¹¤ë¤³¤È¤Ï¤Ê¤¤

semadj ¤Ï¥×¥í¥»¥¹¤´¤È¤ÎÀ°¿ô¤Ç¡¢ SEM_UNDO ¥Õ¥é¥°¤òÀßÄꤷ¤Æ¼Â¹Ô¤µ¤ì¤¿Á´¤Æ¤Î¥»¥Þ¥Õ¥©Áàºî¤Î(Éé¿ô¤Î)¥«¥¦¥ó¥¿¤Ç¤¢¤ë¡£ semctl(2) ¤Ë SETVAL ¤Þ¤¿¤Ï SETALL ¤ò»ØÄꤷ¡¢¥»¥Þ¥Õ¥©¤ÎÃͤ¬ ľÀÜÀßÄꤵ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢Á´¤Æ¤Î¥×¥í¥»¥¹¤Ë¤ª¤¤¤ÆÂбþ¤¹¤ë semadj ¤ÎÃͤ¬¥¯¥ê¥¢¤µ¤ì¤ë¡£

¤¢¤ë¥»¥Þ¥Õ¥©¤Î semval, sempid, semzcnt, semnct ¤ÎÃͤϤ¤¤º¤ì¤â¡¢Å¬ÀÚ¤ÊÁàºî¤ò»ØÄꤷ¤Æ semctl(2) ¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¼èÆÀ¤Ç¤­¤ë¡£

¥»¥Þ¥Õ¥©½¸¹ç¤Î¥ê¥½¡¼¥¹¤Ë´Ø¤¹¤ëÀ©¸Â¤Î¤¦¤Á¡¢ semop() ¤Ë±Æ¶Á¤òµÚ¤Ü¤¹¤â¤Î¤ò°Ê²¼¤Ëµó¤²¤ë:

SEMOPM
°ì²ó¤Î semop() ¤Çµö¤µ¤ì¤ëÁàºî¤ÎºÇÂç¿ô (32)¡£ (Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃÍ¤Ï /proc/sys/kernel/sem ¤ÎÂè3¥Õ¥£¡¼¥ë¥É¤ËÂбþ¤·¡¢Æɤ߽Ф·¤âÊѹ¹¤â¤Ç¤­¤ë)¡£
SEMVMX
semval ¤¬¼è¤êÆÀ¤ëºÇÂçÃÍ: ¼ÂÁõ°Í¸ (32767)¡£

°Ê²¼¤ÎÃͤ˴ؤ·¤Æ¤Ï¼ÂÁõ°Í¸¤ÎÀ©¸Â¤Ï¤Ê¤¤¡£ ½ªÎ»»þ¤ÎÄ´À° (adjust on exit) ¤ÎºÇÂçÃÍ (SEMAEM)¡¢ ¥·¥¹¥Æ¥àÁ´ÂΤΥ¢¥ó¥É¥¥¹½Â¤ÂΤκÇÂç¿ô (SEMMNU)¡¢ ¥×¥í¥»¥¹¤¢¤¿¤ê¤Î¥¢¥ó¥É¥¥¹½Â¤ÂΤκÇÂç¿ô¡£

semtimedop() ¤Ï Linux 2.5.52 ¤Ç½é¤á¤ÆÅо줷¡¢ ¤½¤ì¤«¤é¥«¡¼¥Í¥ë 2.4.22 ¤Ë¤â°Ü¿¢¤µ¤ì¤¿¡£

¥Ð¥°

¥×¥í¥»¥¹¤¬½ªÎ»¤¹¤ëºÝ¡¢¥×¥í¥»¥¹¤ËÂбþ¤¹¤ë semadj ¤Î½¸¹ç¤ò»È¤Ã¤Æ¡¢ SEM_UNDO ¥Õ¥é¥°ÉÕ¤­¤Ç¼Â¹Ô¤µ¤ì¤¿Á´¤Æ¤Î¥»¥Þ¥Õ¥©Áàºî¤Î±Æ¶Á¤ò¼è¤ê¾Ã¤¹¡£ ¤³¤ì¤Ë¤è¤ê¤¢¤ëÌäÂ꤬ȯÀ¸¤¹¤ë: ¤³¤ì¤é¤Î¥»¥Þ¥Õ¥©¤ÎÄ´À°¤ò¹Ô¤Ã¤Æ¤¤¤ë¤È¡¢ Ãæ¤Ë¤Ï¥»¥Þ¥Õ¥©¤ÎÃͤ¬ 0 ̤Ëþ¤ÎÃͤˤ·¤è¤¦¤È¤¹¤ë¾ì¹ç¤¬½Ð¤Æ¤¯¤ë¡£ ¤³¤Î¤è¤¦¤Ê¾ì¹ç¡¢¤É¤Î¤è¤¦¤Ë¼ÂÁõ¤¹¤ë¤Ù¤­¤«? ¤Ò¤È¤Ä¤Î¹Í¤¨¤é¤ì¤ë¼êË¡¤Ï¡¢Á´¤Æ¤Î¥»¥Þ¥Õ¥©Ä´À°¤¬¼Â¹Ô¤µ¤ì¤ë¤Þ¤Ç Ää»ß¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£¤·¤«¤·¡¢¤³¤ÎÊýË¡¤Ç¤Ï¥×¥í¥»¥¹¤Î½ªÎ»¤¬ Ĺ»þ´Ö¤Ë¤ï¤¿¤Ã¤ÆÄä»ß¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¤Î¤Ç˾¤Þ¤·¤¯¤Ê¤¤¡£ ¤·¤«¤â¤É¤ì¤¯¤é¤¤Ä¹»þ´Ö¤Ë¤Ê¤ë¤«¤Ïʬ¤«¤é¤Ê¤¤¡£ Ê̤ÎÁªÂò»è¤È¤·¤Æ¡¢¤³¤Î¤è¤¦¤Ê¥»¥Þ¥Õ¥©Ä´À°¤ò´°Á´¤Ë̵»ë¤·¤Æ¤·¤Þ¤¦ÊýË¡¤¬¤¢¤ë (¤³¤ì¤Ï¥»¥Þ¥Õ¥©Áàºî¤È¤·¤Æ IPC_NOWAIT ¤¬»ØÄꤹ¤ë¤Î¤È¾¯¤·»÷¤Æ¤¤¤ë)¡£ Linux ¤ÏÂè»°¤Î¼êË¡¤òºÎÍѤ·¤Æ¤¤¤ë: ¥»¥Þ¥Õ¥©¤ÎÃͤò½ÐÍè¤ë¤À¤± (¤Ä¤Þ¤ê 0 ¤Þ¤Ç) ¸º¾¯¤µ¤»¤Æ¡¢¥×¥í¥»¥¹¤Î½ªÎ»¤òľ¤Á¤Ë³¹Ô¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤ë¡£

¥«¡¼¥Í¥ë 2.6.x (x <= 10) ¤Ë¤Ï¡¢¤¢¤ë¾õ¶·¤Ë¤ª¤¤¤Æ¥»¥Þ¥Õ¥©Ãͤ¬ 0 ¤Ë¤Ê¤ë¤Î¤ò ÂԤäƤ¤¤ë¥×¥í¥»¥¹¤¬¡¢¥»¥Þ¥Õ¥©Ãͤ¬¼ÂºÝ¤Ë 0 ¤Ë¤Ê¤Ã¤¿¤È¤­¤Ëµ¯¾² (wake up) ¤µ¤ì¤Ê¤¤¡¢¤È¤¤¤¦¥Ð¥°¤¬¤¢¤ë¡£¤³¤Î¥Ð¥°¤Ï¥«¡¼¥Í¥ë 2.6.11 ¤Ç½¤Àµ¤µ¤ì¤Æ¤¤¤ë¡£

´ØÏ¢¹àÌÜ

semctl(2), semget(2), sigaction(2), capabilities(7), sem_overview(7), svipc(7)