ÔÚÏß³ÌÖзÃÎÊÒ»¸öÏûÏ¢¶ÓÁÐÖеÄÏûÏ¢£¬´øÓг¬Ê±¹¦ÄÜ£¬µ«ÊDz»ÄÜÓÃÐźÅÀ´ÊµÏÖ£¬ÉùÃ÷´ó¸ÅÈçÏ£º
int RecvFromMsq(int Msq_id/*ÏûÏ¢¶ÓÁÐID*/, int msg_num/*ÏûÏ¢ID*/£¬ unsigned char * recv_buf,..., int timeout/*³¬Ê±Ê±¼ä*/);
¹¦ÄÜÊÇ´ÓÖ¸¶¨ÏûÏ¢¶ÓÁÐÖжÁȡһ¸öÖ¸¶¨ÏûÏ¢£¬Èç¹ûÔÚtimeoutʱ¼äÄÚûÓжÁµ½£¬ÄÇô¾Í³¬Ê±Í˳ö¡£
ÎÒÏëÁ˺ܾã¬Èç¹ûûÓÐÐźţ¬ÕæµÄ²»ÖªµÀÈçºÎʵÏÖ£¬Çë´ó¼Ò½ÌÎÒ£¬Ð»Ð»
ÎÒÃǿͻ§µÄ³ÌÐòÊÇÔËÐÐÔÚһ̨¹«¹²µÄunix»úÆ÷Éϵģ¬Ö®Ç°Ôø¾·¢ÉúÐźŵ¼Ö½ø³Ì´íÂÒµÄÇé¿ö£¨¾ßÌåÇé¿ö²»Çå³þ£©£¬ÏÖÔÚÒªÇó²»ÄÜÓÃÐźÅ×ö³¬Ê±ÁË¡£
ÁíÍ⣬Çë½Ìһϣ¬Èç¹û×Ô¼ºÁíÍâ ¿ªÒ»¸öÏ̼߳ÆËãʱ¼ä£¬ÄÇôµ½ÁËÉ趨³¬Ê±Ê±¼ä£¬ÈçºÎÖжÏÎÒµÄÄǸöÒѾ×èÈûÔÚÏûÏ¢¶ÓÁжÁÈ¡µÄº¯Êý msgrcv£¨¡£¡£¡££©£¿
²ÌÍòîÈ ÓÚ 2009-06-05 18:24:14·¢±í:
ʹÓ÷Ç×èÈûIO
ʹÓà MSG_NONBLOCK ±êÖ¾µ÷ÓÃ
ÇëÊ×ÏÈʹÓà poll()
¾ßÌå´úÂ룺
pollfd pfd ;
pfd.fd = ÏûÏ¢ÁжÓÃèÊö·û
pfd.event = POLLIN;
ret = poll(&pfd,1, ³¬Ê±µÄºÁÃëÊýÖµ ) ;
if( ret == 0) //³¬Ê±
£û
//³¬Ê±µÄ°¡
£ýelse if (ret ==1)
{
// ¿ÉÒÔ¶ÁÈ¡ÏûÏ¢ÁË
ret = revcform( ....... . MSG_NONBLOC);
Õâ¸ö MSG_NONBLOCºÜÖØÒªµÄŶ¡£Òì²½ IOµÄ»ù´¡¡£
switch(ret)
{ //ÂýÂý case °É
}
}