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

📄 sesmsgqueue.c

📁 linux下编写的一个时间定时触发器
💻 C
字号:
#include "sesMsgQueue.H"
//return: err=-1 suc>0int sesMsgQueue::MsqCreate(key_t key){	return(msgget(key, IPC_CREAT|0666));}//return: err=-1 suc>0   type:blockingint sesMsgQueue::MsqSend(int msqid, sesMsg msg){	int len = sizeof(struct msgbuf) - 1 + sizeof(struct sesMsgMem) - 1 + msg.msghead.msgSize;			  
	struct msgbuf *pMsgbuf = (struct msgbuf *)malloc(len);		
	pMsgbuf->mtype = 1;
	
	struct sesMsgMem *pSesMsgMem = (struct sesMsgMem *)pMsgbuf->mtext;
	//struct sesMsg *pSesMsg = (struct sesMsg *)(&pMsgbuf->mtext[0]);
	
	pSesMsgMem->msghead = msg.msghead;

	memcpy(pSesMsgMem->msgbody, msg.message, msg.msghead.msgSize);
		
	int ret = msgsnd(msqid, pMsgbuf, len - sizeof(long), 0);
	free(pMsgbuf);
	return ret;
}
//return: err=-1 suc>0   type:nonblockingint sesMsgQueue::MsqSendTo(int msqid, sesMsg msg)
{
	int len = sizeof(struct msgbuf) - 1 + sizeof(struct sesMsgMem) - 1 + msg.msghead.msgSize;			  
	struct msgbuf *pMsgbuf = (struct msgbuf *)malloc(len);		
	pMsgbuf->mtype = 1;
	
	struct sesMsgMem *pSesMsgMem = (struct sesMsgMem *)pMsgbuf->mtext;
	//struct sesMsg *pSesMsg = (struct sesMsg *)(&pMsgbuf->mtext[0]);
	
	pSesMsgMem->msghead = msg.msghead;

	//printf("msg.msghead.msgSize=%d\n", msg.msghead.msgSize);
	//printf("msg.message=%s\n", msg.message);

	memcpy(pSesMsgMem->msgbody, msg.message, msg.msghead.msgSize);

	int ret = msgsnd(msqid, pMsgbuf, len - sizeof(long), IPC_NOWAIT);
	free(pMsgbuf);
	return ret;
}

//return: err=-1 suc>0int sesMsgQueue::MsqRecv(int msqid, sesMsg *msg)
{
	char *pbuf = (char*)malloc(SESMSG_MAX_SIZE);
	int ret = msgrcv(msqid, (struct msgbuf *)pbuf, SESMSG_MAX_SIZE, 0, 0);
	struct msgbuf *pMsgbuf = (struct msgbuf *)pbuf;
	struct sesMsgMem *pmsgmem = (struct sesMsgMem *)pMsgbuf->mtext;
printf("run kkkk\n");	

	msg->msghead = pmsgmem->msghead;
	printf("pmsgmem->msghead.msgSize=%d\n", pmsgmem->msghead.msgSize);

//	memcpy(msg->message, pmsgmem->msgbody, pmsgmem->msghead.msgSize);
	free(pbuf);
printf("run ok\n");
	return ret;
}

//return: err=-1 suc>0int sesMsgQueue::MsgRemove(int msqid){	return(msgctl(msqid, IPC_RMID, 0));}//return: err=-1 suc>0int sesMsgQueue::GetMsqId(key_t key){	return(msgget(key,0));}//return: err=-1 suc>=0int sesMsgQueue::GetMsgCount(int msqid){	msqid_ds msginfo;	int reval;	reval=msgctl(msqid, IPC_STAT, &msginfo);	if(reval==-1)	{		//printf("get msg info error\n");		return reval;	}	int msgnum=msginfo.msg_qnum;	//printf("last msgsnd time is %s", ctime(&(msginfo.msg_stime)));	//printf("last msgrcv time is %s", ctime(&(msginfo.msg_rtime)));	//printf("last change time is %s", ctime(&(msginfo.msg_ctime)));	return msgnum;}

⌨️ 快捷键说明

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