⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unix_sec.c

📁 因为在UNIX系统中没有毫秒的方法
💻 C
字号:
extern int select();
int Myusleep(long usec)/* delay in microseconds */
{
static struct{     /* timeval   */
  long tv_sec;     /* seconds   */
  long tv_usec;    /* microsecs */
}delay;
delay.tv_sec=usec/1000000L; /*_select()timeout */
delay.tv_usec=usec%1000000L;
  return select( 0, (long *)0, (long *)0, (long *)0, &delay );
}

/*create message queue*/
int CreateQueue(int Queue_No)
{
   int    ReQueueId;
   key_t  Create_Queue_id;
   Create_Queue_id = Queue_No;
   if((ReQueueId=msgget(Create_Queue_id,IPC_CREAT | 0666))==-1){
      perror("\r\nCreate Queue error\n");
      exit(1);
   }
   return(ReQueueId);
}
/**************************
*read message queue
*in  .............
*out return 0 success
*          <0 failed
****************************/
int ReadQueueMessage(int MessageType,char *msg,int msgsize,int ReadQueueID )
{
   bzero((char*)&rbuf,0,sizeof(MESGBUF));
   if(msgrcv(ReadQueueID,&rbuf,msgsize,MessageType,IPC_NOWAIT | 0xffff)==-1)
   {
      return(-1);
   }
   memcpy(msg,rbuf.mtext,msgsize);
   msg[msgsize]=0x0;
   return(0);
}

/**************************
*write message queue
*in  .............
*out return 0 success
*          <0 failed
****************************/
int WriteQueueMessage(int MessageType,char *msg,int msgsize,int WriteQueueID)
{
   int i=1;
   //printf("MessageType=%d msg=%s msgsize=%d\r\n",MessageType,msg,msgsize);
   bzero((char*)&wbuf,0,sizeof(MESGBUF));
   wbuf.mtype=MessageType;
   memcpy(wbuf.mtext,msg,msgsize);
   for(i=0;i<10000;i++){
      if( msgsnd(WriteQueueID,&wbuf,msgsize,IPC_NOWAIT | 0xffff)==-1){
          if ( i >= 10000 ){
               printf("\r\nWriteQueueMessage() OverFlow.....\r\n");
               break;
             }
          else {
               Myusleep(100);
               continue;
              }
         }//if
      break;
   }
   if(i>=10000) return(-1);
   return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -