MSGOP

Section: ¸®´ª½º ÇÁ·Î±×·¡¸Ó ¸Å´º¾ó (2)
Updated: 1993³â 11¿ù 1ÀÏ
Index
Return to Main Contents
 

À̸§

msgop - ¸Þ¼¼Áö ÀÛµ¿µé  

»ç¿ë¹ý

# include <sys/types.h>

# include <sys/ipc.h>
# include <sys/msg.h>

int msgsnd ( int msqid, struct msgbuf *msgp, int msgsz, int msgflg )

int msgrcv ( int msqid, struct msgbuf *msgp, int msgsz, long msgtyp, int msgflg )  

¼³¸í

¸Þ¼¼Áö¸¦ º¸³»°í ¹Þ±â À§Çؼ­, È£Ãâ ÇÁ·Î¼¼½º´Â ´ÙÀ½°ú °°Àº ±¸Á¶Ã¼¸¦ ÇÒ´çÇØ¾ß ÇÑ´Ù.

       struct msgbuf {
               long    mtype;   /* ¸Þ¼¼Áö ŸÀÔ, 0 º¸´Ù Ä¿¾ß ÇÑ´Ù */

               char    mtext[1];        /* ¸Þ¼¼Áö µ¥ÀÌÅÍ */

       };

±×·¯³ª ¹è¿­
mtext °¡ °¡Áö°í ÀÖ´Â msgszÀÇ Å©±â´Â ¾ç¼ö °ªÀ̾î¾ß ÇÑ´Ù. ±¸Á¶Ã¼ ¸â¹ö mtype Àº È£Ãâ ÇÁ·Î¼¼½º°¡ ¸Þ¼¼Áö ¼±ÅÃÀ» À§ÇØ »ç¿ëÇÒ¼ö ÀÖµµ·Ï È®½ÇÈ÷ ¾ç¼ö°ªÀ̾î¾ß ÇÑ´Ù. ( msgrcv¸¦ ÂüÁ¶Çضó).

È£Ãâ ÇÁ·Î¼¼½º´Â Å¥¿¡ ÀÖ´Â ¸Þ¼¼Áö¸¦ º¸³»±â À§ÇØ ¾²±â Á¢±ÙÀ» °¡Áö°í ÀÖ¾î¾ß ÇÏ¸ç ¸Þ¼¼Áö¸¦ ¹Þ±â À§ÇØ Àбâ Çã°¡±ÇÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù.

msgsnd ½Ã½ºÅÛ ÄÝÀº msgp ÀÎÀÚ°¡ °¡¸®Å°°í ÀÖ´Â ¸Þ¼¼ÁöÀÇ º¹»çº»À» ½Äº°ÀÚ°¡ msqid ÀÎÀÚ °ªÀÎ ¸Þ¼¼Áö Å¥¿¡ ³Ö´Â´Ù.

msgflg ÀÎÀÚ´Â µé¾î¿Â »õ ¸Þ¼¼Áö°¡ ¸¸ÀÏ Å¥¿¡¼­ msg_qbytes ÀÌ»óÀ» ¿ä±¸ÇÑ´Ù¸é ½Ã½ºÅÛ ÄÝÀÇ ÇൿÀ» ÁöÁ¤ÇÑ´Ù. IPC_NOWAIT °¡ ¸í½ÃµÇ¾ú´Ù¸é ¸Þ¼¼Áö´Â º¸³»ÁöÁö ¾ÊÀ¸¸ç ½Ã½ºÅÛ ÄÝÀº errno ¸¦ EAGAINÀ¸·Î ¼³Á¤ÇÏ°í ½ÇÆи¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à ±×·¸Áö ¾ÊÀ¸¸é ÇÁ·Î¼¼½º´Â ÁßÁö»óÅ°¡ ´õÀÌ»ó Á¸ÀçÇÏÁö ¾ÊÀ»¶§±îÁö³ª(¸Þ¼¼Áö°¡ º¸³»Áö°í ½Ã½ºÅÛ È£ÃâÀÌ ¼º°øÇßÀ» °æ¿ì), Å¥°¡ Á¦°ÅµÇ¾ú°Å³ª(½Ã½ºÅÛ È£ÃâÀÌ errno ¸¦ EIDRM·Î ¼³Á¤ÇÏ°í ½ÇÆÐÇßÀ» °æ¿ì), ÇÁ·Î¼¼½º°¡ ½ÅÈ£¸¦ ¹ÞÀ»¶§±îÁö ÀϽà ÁßÁöµÈ´Ù(½Ã½ºÅÛ È£ÃâÀÌ errno ¸¦ EINTR·Î ¼³Á¤ÇÏ°í ½ÇÆÐÇßÀ» °æ¿ì).

¼º°ø½Ã ¸Þ¼¼Áö Å¥ µ¥ÀÌÅÍ ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ °»½ÅµÈ´Ù:

msg_lspid ´Â È£Ãâ ÇÁ·Î¼¼½ºÀÇ ÇÁ·Î¼¼½º-ID·Î ¼³Á¤µÈ´Ù.
msg_qnum ´Â 1 Áõ°¡ÇÑ´Ù.
msg_stime ´Â ÇöÀç ½Ã°£À¸·Î ¼³Á¤µÈ´Ù.

msgrcv ½Ã½ºÅÛ È£ÃâÀº msqid °¡ °¡¸®Å°´Â ¸Þ¼¼Áö Å¥¿¡¼­ ¸Þ¼¼Áö¸¦ Àо msgp ÀÎÀÚ°¡ °¡¸®Å°´Â msgbuf ·Î º¹»çÇϸç, ¼º°ø½Ã ¸Þ¼¼Áö Å¥¿¡¼­ ÀÐÀº ÇØ´ç ¸Þ¼¼Áö´Â »èÁ¦µÈ´Ù.

ÀÎÀÚ msgsz ´Â msgp ÀÎÀÚ°¡ °¡¸®Å°´Â ±¸Á¶Ã¼¿¡¼­ mtext ¸â¹öÀÇ ÃÖ´ë Å©±â ¹ÙÀÌÆ®¸¦ °¡¸®Å²´Ù. ¸Þ¼¼Áö ÅؽºÆ®°¡ msgszº¸´Ù Å« ±æÀ̸¦ °¡Áö°í msgflg ÀÎÀÚ¿¡ MSG_NOERROR°¡ ¸í½ÃµÇ¾î ÀÖ´Ù¸é ¸Þ¼¼Áö ÅؽºÆ®´Â À߸°´Ù(±×¸®°í Àß·ÁÁø ºÎºÐÀ» ÀҴ´Ù). ¸¸ÀÏ ±×·¸Áö ¾ÊÀ¸¸é ¸Þ¼¼Áö´Â Å¥¿¡¼­ Á¦°Å µÇÁö ¾ÊÀ¸¸ç ½Ã½ºÅÛ ÄÝÀº errno ¸¦ E2BIGÀ¸·Î ¼³Á¤ÇÏ°í ½ÇÆи¦ ¹ÝȯÇÑ´Ù.

ÀÎÀÚ msgtyp ´Â ´ÙÀ½°ú °°Àº ¸Þ¼¼Áö ŸÀÔÀ» ÁöÁ¤ÇÑ´Ù.

¸¸ÀÏ msgtyp °¡ 0À̸é, Å¥ÀÇ ¾Õ¿¡ ÀÖ´Â ¸Þ¼¼Áö¸¦ Àд´Ù.
¸¸ÀÏ msgtyp °¡ 0º¸´Ù Å©°í MSG_EXCEPT °¡ msgflg ÀÎÀÚ¿¡ ÀÇÇØ ÁöÁ¤µÇ¾î ÀÖÁö ¾Ê´Ù¸é, msgtyp ŸÀÔ Å¥ÀÇ Ã³À½ ¸Þ¼¼Áö°¡ ÀÐÇôÁø´Ù. ¸¸ÀÏ ±×·¸Áö ¾ÊÀ¸¸é msgtyp °ú °°Áö ¾ÊÀº ŸÀÔÀÇ Å¥¿¡ Àִ óÀ½ ¸Þ¼¼Áö¸¦ Àд´Ù.
¸¸ÀÏ msgtyp ÀÌ 0º¸´Ù ÀÛ´Ù¸é, msgtyp Àý´ë°ªº¸´Ù À۰ųª °°Àº ŸÀÔÀÇ Å¥¿¡ Àִ óÀ½ ¸Þ¼¼Áö°¡ ÀÐÇôÁø´Ù.

msgflg ÀÎÀÚ´Â ´ÙÀ½°ú °°Àº Ç÷¡±×Áß Çϳªµµ ¾ø°Å³ª, Çϳª ¶Ç´Â ±× ÀÌ»óÀ»(¶Ç´Â ±×°Íµé Áß¿¡¼­)ÁöÁ¤ÇÑ´Ù:

IPC_NOWAIT ¿ä±¸µÈ ŸÀÔÀÇ ¸Þ¼¼Áö°¡ Å¥¿¡ ¾ø´Ù¸é Áï½Ã ¸®ÅÏÇÑ´Ù. ½Ã½ºÅÛ ÄÝÀº errno¸¦ ENOMSGÀ¸·Î ¼³Á¤ÇÏ°í ½ÇÆÐÇÑ´Ù.
MSG_EXCEPT msgtyp°ú ´Ù¸¥ ¸Þ¼¼Áö ŸÀÔÀ» °¡Áö°í Àִ ťÀÇ Ã³À½ ¸Þ¼¼Áö¸¦ Àбâ À§ÇØ 0 º¸´Ù Å« msgtyp À» »ç¿ëÇÑ´Ù.
MSG_NOERROR msgsz ¹ÙÀÌÆ®º¸´Ù Å©´Ù¸é ¸Þ¼¼Áö ÅؽºÆ®¸¦ ÀÚ¸¥´Ù.

¸¸ÀÏ ¿ä±¸µÈ ŸÀÔÀÇ ¸Þ¼¼Áö¸¦ ÀÌ¿ëÇÒ¼ö ¾øÀ¸¸ç IPC_NOWAIT °¡ msgflg¿¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾Ê´Ù¸é, È£Ãâ ÇÁ·Î¼¼½º´Â ´ÙÀ½ Á¶°ÇÁß Çϳª°¡ ÀϾ¶§±îÁö ºí·° µÈ´Ù.

¿øÇϴ ŸÀÔÀÇ ¸Þ¼¼Áö°¡ Å¥¿¡ ÀÖ´Ù.
¸Þ¼¼Áö Å¥´Â ½Ã½ºÅÛ¿¡¼­ Á¦°Å µÇ¾ú´Ù. ±×·± °æ¿ì ½Ã½ºÅÛ È£ÃâÀº errno ¸¦ EIDRMÀ¸·Î ¼³Á¤ÇÏ°í ½ÇÆÐÇÑ´Ù.
È£Ãâ ÇÁ·Î¼¼½º°¡ ÀâÀ» ¼ö ÀÖ´Â ½ÅÈ£¸¦ ¹Þ¾Ò´Ù. ±×·± °æ¿ì ½Ã½ºÅÛ È£ÃâÀº errno ¸¦ EINTRÀ¸·Î ¼³Á¤ÇÏ°í ½ÇÆÐÇÑ´Ù.

¼º°ø½Ã, ¸Þ¼¼Áö Å¥ µ¥ÀÌÅÍ ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ °»½ÅµÈ´Ù:

msg_lrpid ´Â È£Ãâ ÇÁ·Î¼¼½ºÀÇ ÇÁ·Î¼¼½º-ID·Î ¼³Á¤µÈ´Ù.
msg_qnum ´Â 1 °¨¼ÒÇÑ´Ù.
msg_rtime ´Â ÇöÀç ½Ã°£À¸·Î ¼³Á¤µÈ´Ù.
 

¹Ýȯ°ª

½ÇÆнà µÎÇÔ¼ö ¸ðµÎ -1 À» ¸®ÅÏÇÑ´Ù. errno ´Â ¿¡·¯¸¦ °¡¸®Å²´Ù. ¸¸ÀÏ ±×·¸Áö ¾ÊÀ¸¸é msgsnd ´Â 0 À» ¹ÝȯÇϸç msgrvc ´Â mtext ¹è¿­·Î ½ÇÁ¦·Î º¹»çµÈ ¹ÙÀÌÆ®¼ö¸¦ ¹ÝȯÇÑ´Ù.

 

¿¡·¯

msgsnd °¡ ½ÇÆÐÇϸé, ¹Ýȯ½Ã errno ´Â ´ÙÀ½Áß Çϳª·Î ¼³Á¤µÈ´Ù.
EAGAIN
¸Þ¼¼Áö¸¦ Å¥ÀÇ msg_qbytes Á¦ÇÑ °ª ¶§¹®¿¡ º¸³¾¼ö ¾ø´Ù. ±×¸®°í IPC_NOWAIT ´Â mgsflgÀÎÀÚ¿¡ ÁöÁ¤µÇ¾î ÀÖ´Ù.
EACCES
È£Ãâ ÇÁ·Î¼¼½º´Â ¸Þ¼¼Áö Å¥¿¡ ¾²±â Á¢±Ù Çã°¡±ÇÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù.
EFAULT
msgp °¡ °¡¸®Å°°í ÀÖ´Â ÁÖ¼Ò¸¦ Á¢±ÙÇÒ¼ö ¾ø´Ù.
EIDRM
¸Þ¼¼Áö Å¥°¡ Á¦°Å µÇ¾ú´Ù.
EINTR
¸ðµç ¸Þ¼¼Áö Å¥°¡ Àáµç »óÅÂÀ϶§ ÇÁ·Î¼¼½º°¡ ÀâÀ»¼ö ÀÖ´Â ½ÅÈ£¸¦ ¹Þ¾Ò´Ù.
EINVAL
À¯È¿ÇÏÁö ¾ÊÀº msqid °ªÀ̳ª À½¼öÀÇ mtype °ªÀ̳ª, À¯È¿ÇÏÁö ¾ÊÀº msgsz °ª(0º¸´Ù À۰ųª ½Ã½ºÅÛ °ª MSGMAXº¸´Ù Ŭ °æ¿ì).
ENOMEM
½Ã½ºÅÛÀÌ Á¦°øµÈ msgbuf¿¡ º¹»çÇÒ ÃæºÐÇÑ ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù.

msgrcv °¡ ½ÇÆÐÇÒ¶§, ¹Ýȯ½Ã errno ´Â ´ÙÀ½ °ªÁß Çϳª·Î ¼³Á¤µÈ´Ù.

E2BIG
¸Þ¼¼Áö ÅؽºÆ® ±æÀÌ°¡ msgsz º¸´Ù Å©°í MSG_NOERROR °¡ msgflg¿¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾Ê´Ù.
EACCES
È£Ãâ ÇÁ·Î¼¼½º°¡ ¸Þ¼¼Áö Å¥¿¡ ´ëÇÑ Àбâ Á¢±Ù Çã°¡±ÇÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù.
EFAULT
msgp °¡ °¡¸®Å°°í ÀÖ´Â ÁÖ¼Ò¸¦ Á¢±ÙÇÒ¼ö ¾ø´Ù.
EIDRM
ÇÁ·Î¼¼½º°¡ ¸Þ¼¼Áö¸¦ ¹Þ±â À§ÇØ Àáµç µ¿¾È, ¸Þ¼¼Áö Å¥°¡ Á¦°Å µÇ¾ú´Ù.
EINTR
ÇÁ·Î¼¼½º°¡ ¸Þ¼¼Áö¸¦ ¹Þ±â À§ÇØ Àáµç µ¿¾È, ÇÁ·Î¼¼½º°¡ ÀâÀ»¼ö ÀÖ´Â ½ÅÈ£¸¦ ¹Þ¾Ò´Ù.
EINVAL
À¯È¿ÇÏÁö ¾ÊÀº msgqid °ªÀ̳ª, msgsz °¡ 0º¸´Ù ÀÛ´Ù.
ENOMSG
IPC_NOWAIT °¡ msgflg ¿¡ ÁöÁ¤µÇ¾î ÀÖ°í ¿äûµÈ ŸÀÔÀÇ ¸Þ¼¼Áö°¡ ¸Þ¼¼Áö Å¥¿¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
 

ÁÖÀÇ

´ÙÀ½Àº msgsnd ½Ã½ºÅÛ ÄÝ¿¡ ¿µÇâÀ» ÁÖ´Â ½Ã½ºÅÛ Á¦ÇÑ°ªµéÀÌ´Ù:
MSGMAX
¸Þ¼¼Áö ÅؽºÆ®ÀÇ ÃÖ´ë Å©±â: ¼öÇà½Ã ÀÌ °ªÀº 4080 bytes·Î ¼³Á¤µÈ´Ù.
MSGMNB
¸Þ¼¼Áö Å¥ÀÇ ±âº» ÃÖ´ë Å©±â: Á¤Ã¥¿¡ ÀÇÁ¸ÀûÀ̸ç, ½´ÆÛ-À¯Àú´Â msgctl ½Ã½ºÅÛ È£Ãâ·Î ¸Þ¼¼Áö Å¥ÀÇ Å©±â¸¦ MSGMNB ÀÌ»óÀ¸·Î Áõ°¡½Ãų¼ö ÀÖ´Ù.

¼öÇàÀº ¸Þ¼¼Áö Çì´õÀÇ ½Ã½ºÅÛ Àü¿ª ÃÖ´ë ¼ö (MSGTQL) ¿Í ¸Þ¼¼Áö Ç® (MSGPOOL) ÀÇ ½Ã½ºÅÛ Àü¿ª ÃÖ´ë Å©±â¸¦ À§ÇÑ ¾î¶² ³»ºÎÀû Á¦ÇÑ°ªÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù.  

ȣȯ

SVr4, SVID.  

°ü·Ã Ç׸ñ

ipc(5), msgctl(2), msgget(2), msgrcv(2), msgsnd(2)  

¿ªÀÚ

Á¤°­ÈÆ <skyeyes@soback.kornet.net>, 2000³â 6¿ù 24ÀÏ


 

Index

À̸§
»ç¿ë¹ý
¼³¸í
¹Ýȯ°ª
¿¡·¯
ÁÖÀÇ
ȣȯ
°ü·Ã Ç׸ñ
¿ªÀÚ

This document was created by man2html, using the manual pages.
Time: 08:07:00 GMT, March 25, 2004