cmsq_sys.cpp

来自「unix/linux环境下」· C++ 代码 · 共 131 行

CPP
131
字号
/********************************************************** * name: CMSQ_Sys.cpp * * Description:  *   SYSTEM MESSAGE QUEUE. * *   Copyright to DDP 2000-2001 All rights reverved. *   2001.01.03 Created * * email: ddp@public.qz.fj.cn **********************************************************/#include "../include/CMSQ_Sys.h"	CMSQ_Sys::CMSQ_Sys()	{		;	}	CMSQ_Sys::~CMSQ_Sys()	{		;	}	// Create a new message queue if required	int CMSQ_Sys::MsqCreate(key_t key)	{		int retval;		while( 1 )		{			//if( (retval=msgget(key,PERMS|IPC_CREAT|IPC_EXCL)) < 0 ) 			if( (retval=msgget(key,PERMS|IPC_CREAT)) < 0 )			{				if( errno==EINTR )					continue;				else					break;			}			else			{				break;			}		}		return retval;	}	// Open a message queue	int CMSQ_Sys::MsqGet(key_t key)	{		return( msgget(key,PERMS) );	}	// Write a message to message queue	// id: identify of Msq	int CMSQ_Sys::MsqWrite(int id,LISTSMG *mp,int len,int flag)	{		int retval;		while( 1 )		{			if( (retval=msgsnd(id,mp,len,flag)) < 0 )			{				if( errno==EINTR )					continue;				else					break;			}			else			{				break;			}		}		return retval;	}	// recieve a message from Msq, return length of string	// Before use it, you must defined mptr->type to tell 	// IPC which type you wanna get.	// id - identify of Msq	// mptr - pointer to my_buffer	// flag - 0 or IPC_NOWAIT	// return length of recieve string, else return -1 	int CMSQ_Sys::MsqRead(int id,LISTSMG *mptr,int flag)	{		int retval;		while( 1 )		{			if( (retval=msgrcv(id,mptr,sizeof(LISTSMG),mptr->type,flag)) < 0 )			{				if( errno==EINTR )					continue;				else					break;			}			else			{				break;			}		}		return retval;	}	// Delete message queue from ipcs	// id - identify of message queue	int CMSQ_Sys::MsqDelete(int id)	{		int retval;		while( 1 )		{			//if( (retval=msgctl(id,IPC_RMID,(LISTSMG *)NULL)) < 0 ) 			if( ( retval=msgctl(id,IPC_RMID, NULL)) < 0 ) 			{				if( errno==EINTR )					continue;				else					break;			}			else			{				break;			}		}		return retval;	}

⌨️ 快捷键说明

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