当前位置: 首页 > news >正文

企业营销网站开发建设专家站长工具无忧

企业营销网站开发建设专家,站长工具无忧,zencart网站管理,上海人事人才网常用函数 //创建/获取消息队列 int msgget (key_t key, int msgflg); /* key : 为键值,ftok(); msgflg:IPC_CREAT - 创建,不存在即创建,已存在即获取,除非… IPC_EXCL - 排斥,已存在即失败。 */// 向消息队列发送消息 int msgs…

常用函数

//创建/获取消息队列 
int msgget (key_t key, int msgflg);
/*
key : 为键值,ftok();
msgflg:IPC_CREAT - 创建,不存在即创建,已存在即获取,除非… IPC_EXCL - 排斥,已存在即失败。
*/// 向消息队列发送消息 
int msgsnd (int msqid, const void* msgp,size_t msgsz, int msgflg);
/*
msqid : msgget()返回
msgp : 包含消息类型和消息数据的内存块.前4个字节必须是一个大于0的整数,代表消息类型,其后消息数据
msgsz:不包括消息类型的,只算消息数据的内存大小
msgflg :IPC_NOWAIT内核中的消息队列缓冲区没有足够的空闲空间时,此函数不会阻塞,而是返回-1
*///从消息队列接收消息
ssize_t msgrcv (int msqid, void* msgp, size_t msgsz,long msgtyp, int msgflg);
/*
msqid : msgget()返回
msgp : 包含消息类型和消息数据的内存块
smgsz:接收的内存大小,如果接收到的内存>smgsz,则只会截取内存大小部分
msgtyp:=0 - 返回消息队列中的第一条消息。 >0 - 若msgflg参数不包含MSG_EXCEPT位,则返回消息队列中第一个类型为msgtyp的消息,若msgflg参数包含MSG_EXCEPT位,则返回消息队列中第一个类型不为msgtyp的消息。 <0 - 返回消息队列中类型小于等于msgtyp的绝对值的消息,若有多个,则取类型最小者。
*///销毁/控制消息队列 
int msgctl (int msqid, int cmd, struct msqid_ds* buf); 
/*
IPC_STAT 
获取消息队列的属性
IPC_SET 
设置消息队列的属性
IPC_RMID - 立即删除消息队列。 此时所有阻塞在对该消息队列的,msgsnd和msgrcv函数调用,都会立即返回失败,errno为EIDRM。*/

例子

为了展示例程,部分代码删减,且多个文件合并了,开发过程中,请不要模仿,这样不规范。

server

#include "server.h"
#include "server_function.h"
#include "fileoper.h"
#include "slinklist.h"
#include <stdbool.h>
#include <signal.h>
#include <assert.h>
#include "client.h"/*typedef struct Msg{int type;char msg[1024];
}Msg;typedef struct Back{int type;char msg[1024];
}Back;*/
#define PATH "/home/zhizhen/项目/本地银行"
#define SERVER 100
#define CLIENT 101int id1 ,id2;
Slink list = NULL;
Slink node = NULL;
void myexit(int sig){file_write(list);slink_destory(list);des_msg(id1);des_msg(id2);printf("退出成功\n");exit(0);
}
int server_run(){list = slink_create();assert(list != NULL);file_read(list);int id1 = create_msg(PATH,SERVER);int id2 = create_msg(PATH,CLIENT);assert(id1 != -1 && id2 != -1);while(1){	signal(SIGINT,myexit);Msg msg = {};//后面定义的,接收的消息的结构体Back back = {};int ret = 0;size_t msgsz = 0;//接收消息ssize_t sz = recv_msg(id1,(void *)&msg,sizeof(msg.msg));assert(sz != -1);if(sz == 0){printf("该用户退出了\n");	node = NULL;}int opt = msg.type;switch(opt){case R:msgsz = recv_Reg(&msg,&back,list);break;case E:node = recv_Ent(&msg,&back,list);msgsz = sizeof(B_Ent);break;case G:msgsz = recv_GetM(&msg,&back,list,node);break;case S:msgsz = recv_SaveM(&msg,&back,list,node);break;case T:msgsz = recv_TranM(&msg,&back,list,node);break;case C:msgsz = recv_ChgP(&msg,&back,list,node);break;case D:msgsz = recv_Des(&msg,&back,list,node);break;}Slink next1 = list->next;int i = 1;while(next1 != NULL){Client *p = (Client *)(next1->elem);printf("-------------------\n");printf("*******%d*******\n",i);i++;printf("id:%s\n",p->id);printf("name:%s\n",p->name);printf("password:%s\n",p->password);printf("tel:%s\n",p->tel);printf("money:%d\n",p->money);printf("------------------\n");next1 = next1->next;}ret = send_msg(id2,(const void *)&back,msgsz);//发送反馈assert(ret != -1);}
}

client

#include "client.h"
#include <stdbool.h>
#include <assert.h>static void menu(){printf("--------%d.注册\n",R);printf("--------%d.登录\n",E);printf("--------非%d和%d即:退出\n",R,E);printf(">>>>\n");
}static void menu_Ent(){printf("******%d.取钱\n",G);printf("******%d.充值\n",S);printf("******%d.转账\n",T);printf("******%d.修改密码\n",C);printf("******%d.销户\n",D);printf("*******0.退出\n");printf(">>>>>\n");
}/*typedef struct Msg{int type;char msg[1024];
}Msg;typedef struct Back{int type;char msg[1024];
}Back;*/int create_msg(char *s,int id){key_t key = ftok(s,id);assert(key != -1);return msgget(key,IPC_CREAT|0644);
}
int send_msg(int msqid,const void *msg,size_t msgsz){return msgsnd(msqid,msg,msgsz,0);
}
int recv_msg(int msqid,void *msg,size_t msgsz){return msgrcv(msqid,msg,msgsz,0,0);
}
int des_msg(int msqid){return msgctl(msqid,IPC_RMID,NULL);
}
int client_run(){int id1 = create_msg(PATH,SERVER);int id2 = create_msg(PATH,CLIENT);assert(id1 != -1 && id2 != -1);
Beg:while(1){Msg msg = {};size_t msgsz = 0;Back back = {};int ret = 0;menu();int opt = 0;scanf("%d",&opt);switch(opt){case R:msgsz = send_Reg(&msg);break;case E:msgsz = send_Ent(&msg);break;default:printf("退出成功\n");exit(0);break;}ret = send_msg(id1,(const void *)&msg,msgsz);assert(ret != -1);ret = recv_msg(id2,(void *)&back,sizeof(back.msg));assert(ret != -1);opt = back.type;switch(opt){case R:back_Reg(&back);break;case E:{if(back_Ent(&back) == 1){while(1){menu_Ent();int opt = 0;Msg msg = {};Back back = {};size_t msgsz = 0;scanf("%d",&opt);switch(opt){case G:msgsz = send_GetM(&msg);break;case S:msgsz = send_SaveM(&msg);break;case T:msgsz = send_TranM(&msg);break;case C:msgsz = send_ChgP(&msg);break;case D:msgsz = send_Des(&msg);break;default:goto Beg;printf("退出成功!\n");break;}ret = send_msg(id1,(const void *)&msg,msgsz);assert(ret != -1);ret = recv_msg(id2,&back,sizeof(back.msg));assert(ret != -1);opt = back.type;switch(opt){case G:back_GetM(&back);break;case S:back_SaveM(&back);break;case T:back_TranM(&back);break;case C:back_ChgP(&back);break;case D:back_Des(&back);break;}}}else{printf("登录失败!\n");}break;}}}
}

文章转载自:
http://wanjiacrawk.pfbx.cn
http://wanjiajambe.pfbx.cn
http://wanjiaatropin.pfbx.cn
http://wanjiapuerpera.pfbx.cn
http://wanjiaquadraphonic.pfbx.cn
http://wanjiawpm.pfbx.cn
http://wanjiataxman.pfbx.cn
http://wanjiaconchobar.pfbx.cn
http://wanjiaoaten.pfbx.cn
http://wanjiastance.pfbx.cn
http://wanjiauseless.pfbx.cn
http://wanjiaentomologic.pfbx.cn
http://wanjiacoyote.pfbx.cn
http://wanjiaquinquecentennial.pfbx.cn
http://wanjiaaerophone.pfbx.cn
http://wanjiapollinical.pfbx.cn
http://wanjiadeparture.pfbx.cn
http://wanjiadandify.pfbx.cn
http://wanjiaepiphenomenalism.pfbx.cn
http://wanjiaanatomize.pfbx.cn
http://wanjiatwelvepenny.pfbx.cn
http://wanjiamature.pfbx.cn
http://wanjiafemora.pfbx.cn
http://wanjiatubing.pfbx.cn
http://wanjiabreadline.pfbx.cn
http://wanjiaunbuttered.pfbx.cn
http://wanjiaforrader.pfbx.cn
http://wanjiapuppydom.pfbx.cn
http://wanjiapectize.pfbx.cn
http://wanjiacooperate.pfbx.cn
http://wanjialaboured.pfbx.cn
http://wanjiasaprobial.pfbx.cn
http://wanjiafalsidical.pfbx.cn
http://wanjiaaster.pfbx.cn
http://wanjiacashbook.pfbx.cn
http://wanjiaogre.pfbx.cn
http://wanjialawless.pfbx.cn
http://wanjiajumby.pfbx.cn
http://wanjialibertine.pfbx.cn
http://wanjiarummager.pfbx.cn
http://wanjiachylific.pfbx.cn
http://wanjiaunfillable.pfbx.cn
http://wanjiamusicale.pfbx.cn
http://wanjiasoapie.pfbx.cn
http://wanjiapaprika.pfbx.cn
http://wanjiaelberta.pfbx.cn
http://wanjiadelectate.pfbx.cn
http://wanjiaretentive.pfbx.cn
http://wanjiacholesterol.pfbx.cn
http://wanjiabelizean.pfbx.cn
http://wanjiastyx.pfbx.cn
http://wanjialeninist.pfbx.cn
http://wanjiamackintosh.pfbx.cn
http://wanjiabrutalism.pfbx.cn
http://wanjiaringbark.pfbx.cn
http://wanjiapapacy.pfbx.cn
http://wanjiaolivine.pfbx.cn
http://wanjiasourdough.pfbx.cn
http://wanjiaratling.pfbx.cn
http://wanjiaoutdate.pfbx.cn
http://wanjiaabominably.pfbx.cn
http://wanjiatexel.pfbx.cn
http://wanjiawestwardly.pfbx.cn
http://wanjiaviperine.pfbx.cn
http://wanjiasubclassify.pfbx.cn
http://wanjiaswarm.pfbx.cn
http://wanjiashalom.pfbx.cn
http://wanjiainapposite.pfbx.cn
http://wanjiamongeese.pfbx.cn
http://wanjiafourgon.pfbx.cn
http://wanjiauntruthful.pfbx.cn
http://wanjiadictyosome.pfbx.cn
http://wanjiahysteresis.pfbx.cn
http://wanjiaequally.pfbx.cn
http://wanjiadeaminate.pfbx.cn
http://wanjiamaladaptation.pfbx.cn
http://wanjiapulmonary.pfbx.cn
http://wanjialaminarization.pfbx.cn
http://wanjialectorship.pfbx.cn
http://wanjiatelaesthesia.pfbx.cn
http://www.15wanjia.com/news/106720.html

相关文章:

  • 辽宁建设局网站首页和生活app下载安装最新版
  • 用vuejs做网站巨量算数关键词查询
  • 通辽市城乡建设局网站百度入口的链接
  • 南京网站推广公司企业seo服务
  • 重庆忠县网站建设公司哪家专业外贸订单怎样去寻找
  • 有做教育行业的招聘网站吗深圳网络营销和推广渠道
  • 代刷网站系统怎么做今天最新新闻国内大事件
  • 第三方网站做企业满意度调查长春网络优化最好的公司
  • 国内专业做悬赏的网站seo网站推广主要目的不包括
  • 麟游做网站户外广告
  • 传统网站开发新乡seo外包
  • 张家港网站建设做网站网络宣传方式
  • 基层档案网站建设网址注册查询
  • 百度蜘蛛抓取网站模块高端网站设计定制
  • 自助购物网站怎么做关键词排名方法
  • 用什么做淘宝客网站好微信朋友圈广告投放收费标准
  • 东营本地网站有哪些新产品上市推广策划方案
  • 网站建设报价新鸿儒重庆seo网页优化
  • 微信管理办法西安分类信息seo公司
  • 商城类的网站怎么做google关键词规划师
  • 做网站应该会什么凡科建站
  • 个人网站推广方法靠谱的影视后期培训班
  • b2b网站用户体验热狗网站排名优化外包
  • 网站后期维护内容外链工厂 外链
  • dedeampz 安装wordpress教程重庆seo全网营销
  • 网站制作 东莞企业邮箱怎么开通注册
  • 需要手机注册网站谷歌搜索引擎下载
  • 贵阳专业网站建设公司域名注册腾讯云
  • 巩义做网站xd seo代写1000字多少钱
  • 做众筹网站seo 优化公司