.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
.\" Translated 2006-07-31, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
.\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24
+.\" Updated 2010-10-27, Akihiro Motoki, LDP v3.29
.\"
-.TH MQ_NOTIFY 3 2009-09-15 "Linux" "Linux Programmer's Manual"
+.TH MQ_NOTIFY 3 2010-10-04 "Linux" "Linux Programmer's Manual"
.SH ̾Á°
mq_notify \- ¥á¥Ã¥»¡¼¥¸ÅþÃå»þ¤ËÄÌÃΤò¹Ô¤¦¤è¤¦ÅÐÏ¿¤¹¤ë
.SH ½ñ¼°
.nf
.B #include <mqueue.h>
.sp
-.BI "mqd_t mq_notify(mqd_t " mqdes ", const struct sigevent *" notification );
+.BI "int mq_notify(mqd_t " mqdes ", const struct sigevent *" notification );
.fi
.sp
\fI\-lrt\fP ¤Ç¥ê¥ó¥¯¤¹¤ë¡£
ÈóƱ´ü¤ÎÄÌÃÎ (notification) ¤ÎÇÛÁ÷¤¬¹Ô¤ï¤ì¤ë¤è¤¦¤ËÅÐÏ¿¤·¤¿¤ê¡¢
¤½¤Î²ò½ü¤ò¹Ô¤Ã¤¿¤ê¤Ç¤¤ë¡£
-.I notification
+.I sevp
°ú¤¿ô¤Ï
.I sigevent
¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£
-.I sigevent
-¹½Â¤ÂΤϰʲ¼¤Î¤è¤¦¤Ê´¶¤¸¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
-.in +4n
-.nf
-
-union sigval { /* Data passed with notification */
- int sival_int; /* Integer value */
- void *sival_ptr; /* Pointer value */
-};
-
-struct sigevent {
- int sigev_notify; /* Notification method */
- int sigev_signo; /* Notification signal */
- union sigval sigev_value; /* Data passed with
- notification */
- void (*sigev_notify_function) (union sigval);
- /* Function for thread
- notification */
- void *sigev_notify_attributes;
- /* Thread function attributes */
-};
-.fi
-.in
+¤³¤Î¹½Â¤ÂΤÎÄêµÁ¤È°ìÈÌŪ¤Ê¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï
+.BR sigevent (7)
+¤ò»²¾È¡£
.PP
-.I notification
+.I sevp
¤¬ NULL ¤Ç¤Ê¤¤¥Ý¥¤¥ó¥¿¤Ç¤¢¤ì¤Ð¡¢
.BR mq_notify ()
¤Ï¥á¥Ã¥»¡¼¥¸ÄÌÃΤò¼õ¤±¼è¤ë¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤òÅÐÏ¿¤¹¤ë¡£
-.I notification
+.I sevp
¤¬»Ø¤¹
.I sigevent
-¤Î
+¹½Â¤ÂΤÎ
.I sigev_notify
¥Õ¥£¡¼¥ë¥É¤Ï¡¢¤É¤Î¤è¤¦¤ÊÄÌÃΤò¹Ô¤¦¤Î¤«¤ò»ØÄꤹ¤ë¡£
¤³¤Î¥Õ¥£¡¼¥ë¥É¤Ï°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«¤ò»ý¤Ä¡£
.B SIGEV_SIGNAL
.I sigev_signo
¤Ç»ØÄꤵ¤ì¤¿¥·¥°¥Ê¥ë¤òÁ÷¤Ã¤Æ¡¢¥×¥í¥»¥¹¤ËÄÌÃΤ¹¤ë¡£
-.BR sigaction (2)
-¤Î
-.B SA_SIGINFO
-¥Õ¥é¥°¤Ç¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤òÅÐÏ¿¤·¤Æ¤¤¤ë¾ì¹ç¡¢
-¤½¤Î¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Ç¥·¥°¥Ê¥ë¤¬Ê᪤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢
-¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ÎÂèÆó°ú¤¿ô¤È¤·¤ÆÅϤµ¤ì¤ë
+°ìÈÌŪ¤Ê¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï
+.BR sigevent (7)
+¤ò»²¾È¡£
.I siginfo_t
-¹½Â¤ÂΤγƥե£¡¼¥ë¥É¤Ï°Ê²¼¤Î¤è¤¦¤ËÀßÄꤵ¤ì¤ë¡£
+¹½Â¤ÂΤÎ
.I si_code
-¤Ë¤Ï
+¥Õ¥£¡¼¥ë¥É¤Ë¤Ï
.B SI_MESGQ
-¤¬¡¢
-.I si_signo
-¤Ë¤Ï¥·¥°¥Ê¥ëÈֹ椬¡¢
-.I si_value
-¤Ë¤Ï
-.I notification\->sigev_value
-¤Ç»ØÄꤷ¤¿Ãͤ¬ÀßÄꤵ¤ì¤ë¡£
+¤¬ÀßÄꤵ¤ì¤ë¡£
.\" I don't know of other implementations that set
.\" si_pid and si_uid -- MTK
+¤µ¤é¤Ë¡¢
.I si_pid
¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤·¤¿¥×¥í¥»¥¹¤Î PID ¤¬¡¢
.I si_uid
¤Ë¤ÏÁ÷¿®¥×¥í¥»¥¹¤Î¼Â¥æ¡¼¥¶ ID ¤¬ÀßÄꤵ¤ì¤ë¡£
-.BR sigwaitinfo (2)
-¤ò»È¤Ã¤Æ¥·¥°¥Ê¥ë¤ò¼õ¿®¤¹¤ë¾ì¹ç¤â¡¢Æ±¤¸¾ðÊó¤¬ÆÀ¤é¤ì¤ë¡£
.TP
.B SIGEV_THREAD
-¿·¤·¤¤¥¹¥ì¥Ã¥É¤Î³«»Ï´Ø¿ô¤È¤·¤Æ
-.I notification\->sigev_thread_function
-¤òµ¯Æ°¤¹¤ë¤³¤È¤ÇÄÌÃΤò¹Ô¤¦¡£
-µ¯Æ°»þ¤Î´Ø¿ô¤Î°ú¤¿ô¤È¤·¤Æ¤Ï
-.I notification\->sigev_value
-¤À¤±¤¬ÅϤµ¤ì¤ë¡£
-.I notification\->sigev_notify_attributes
-¤Ï¡¢NULL °Ê³°¤Î¾ì¹ç¡¢
-¤½¤Î¥¹¥ì¥Ã¥É¤Î°À¤òÄêµÁ¤¹¤ë
-.I pthread_attr_t
-¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤È¤Ê¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ë
-.RB ( pthread_attr_init (3)
-»²¾È)¡£
+¥á¥Ã¥»¡¼¥¸¤ÎÇÛÁ÷»þ¤Ë¤Ï¡¢
+.I sigev_notify_function
+¤¬¤¢¤¿¤«¤â¿·¤·¤¤¥¹¥ì¥Ã¥É¤Î³«»Ï´Ø¿ô¤Ç¤¢¤ë¤«¤Î¤è¤¦¤Ëµ¯Æ°¤µ¤ì¤ë¡£
+¾ÜºÙ¤Ï
+.BR sigevent (7)
+¤ò»²¾È¡£
.PP
°ì¤Ä¤Î¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤«¤éÄÌÃΤò¼õ¿®¤¹¤ë¤è¤¦¤ËÅÐÏ¿¤Ç¤¤ë¥×¥í¥»¥¹¤Ï
°ì¤Ä¤À¤±¤Ç¤¢¤ë¡£
-.I notification
+.I sevp
¤¬ NULL ¤Ç¡¢¤«¤Ä¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤¬¤³¤Î¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤«¤é¤Î
ÄÌÃΤò¼õ¿®¤¹¤ë¤Ë¸½ºßÅÐÏ¿¤·¤Æ¤¤¤ë¾ì¹ç¡¢ÅÐÏ¿¤òºï½ü¤¹¤ë¡£
¤³¤ì°Ê¹ß¡¢ÊÌ¤Î¥×¥í¥»¥¹¤¬¤³¤Î¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤«¤éÄÌÃΤò¼õ¿®¤¹¤ë¤è¤¦¤Ë
¤³¤Î¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤ËÂФ¹¤ëÄÌÃΤò¼õ¿®¤¹¤ë¤è¤¦¤ËÅÐÏ¿¤·¤Æ¤¤¤ë¡£
.TP
.B EINVAL
-.I notification\->sigev_notify
+.I sevp\->sigev_notify
¤¬µö²Ä¤µ¤ì¤¿ÃͤΤ¤¤º¤ì¤Ç¤â¤Ê¤¤¡£¤â¤·¤¯¤Ï
-.I notification\->sigev_notify
+.I sevp\->sigev_notify
¤¬
.B SIGEV_SIGNAL
¤À¤¬
-.I notification\->sigev_signo
+.I sevp\->sigev_signo
¤¬Í¸ú¤Ê¥·¥°¥Ê¥ëÈÖ¹æ¤Ç¤Ï¤Ê¤¤¡£
.TP
.B ENOMEM
ɬÍפʥá¥â¥ê¤¬¤Ê¤«¤Ã¤¿¡£
.PP
POSIX.1-2008 ¤Ç¤Ï¡¢
-.I notifications
+.I sevp
¤¬ NULL ¤Ç¡¢¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤¬¥¥å¡¼
.I mqdes
¤Ë´Ø¤¹¤ëÄÌÃΤò¼õ¿®¤¹¤ë¤è¤¦¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥¨¥é¡¼
main(int argc, char *argv[])
{
mqd_t mqdes;
- struct sigevent not;
+ struct sigevent sev;
if (argc != 2) {
fprintf(stderr, "Usage: %s <mq-name>\\n", argv[0]);
if (mqdes == (mqd_t) \-1)
handle_error("mq_open");
- not.sigev_notify = SIGEV_THREAD;
- not.sigev_notify_function = tfunc;
- not.sigev_notify_attributes = NULL;
- not.sigev_value.sival_ptr = &mqdes; /* ¥¹¥ì¥Ã¥É´Ø¿ô¤ËÅϤ¹°ú¤¿ô */
- if (mq_notify(mqdes, ¬) == \-1)
+ sev.sigev_notify = SIGEV_THREAD;
+ sev.sigev_notify_function = tfunc;
+ sev.sigev_notify_attributes = NULL;
+ sev.sigev_value.sival_ptr = &mqdes; /* ¥¹¥ì¥Ã¥É´Ø¿ô¤ËÅϤ¹°ú¤¿ô */
+ if (mq_notify(mqdes, &sev) == \-1)
handle_error("mq_notify");
pause(); /* ¥×¥í¥»¥¹¤Ï¥¹¥ì¥Ã¥É´Ø¿ô¤Ë¤è¤ê½ªÎ»¤µ¤ì¤ë */
.BR mq_receive (3),
.BR mq_send (3),
.BR mq_unlink (3),
-.BR mq_overview (7)
+.BR mq_overview (7),
+.BR sigevent (7)