📄 unix_sec.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 + -