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

免费网站建设找云狄门户网站建设需求文档

免费网站建设找云狄,门户网站建设需求文档,网站建设项目单子来源,如何查找织梦网站后台常用函数 //创建/获取消息队列 int msgget (key_t key, int msgflg); /* key : 为键值,ftok(); msgflg:IPC_CREAT - 创建#xff0c;不存在即创建#xff0c;已存在即获取#xff0c;除非… IPC_EXCL - 排斥#xff0c;已存在即失败。 */// 向消息队列发送消息 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.hstatic 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://www.w-s-a.com/news/188328/

相关文章:

  • 什么是电商视觉设计郑州seo服务
  • google网站设计原则青海网站建设与管理
  • 简述网站的创建流程广西网站建设定制
  • 唐河网站制作汉中建设工程招标新闻中心
  • 网站过期就可以抢注PHP框架和wordpress
  • 天津做网站得公司克隆网站到wordpress修改
  • 郫县网站建设网站建设报价单及项目收费明细表
  • 商标做网站logo建网站作业
  • 网站顶部展出的大幅广告中建八局第二建设有限公司
  • 公众微信绑定网站帐号优秀中文网页设计
  • 如何做漫画赚钱的网站企业网站管理系统c
  • 安康公司网站制作搜狗网站
  • 太仓住房与城乡建设局网站注册推广赚钱一个80元
  • wordpress 网站生成app企业网站改版的好处
  • 广州建站服务怎么让客户做网站
  • 南京手机网站设计公司wordpress导航页
  • 娄底市建设网站app网站开发小程序
  • 刷粉网站推广免费网站建设找王科杰信誉
  • 投标建设用地是哪个网站微信小程序多少钱
  • 做玄幻封面素材网站我国数字经济报告
  • 手机网站返回跳转wordpress带颜色的文字
  • 微信群领券网站怎么做创意广告图片
  • 跟我一起做网站嘉兴做网站哪家好
  • 上海知名建站公司山东住房和建设庭网站
  • 深圳市城乡建设部网站首页平台设计方案怎么做
  • 深圳美食教学网站制作wordpress列表图显示标题
  • 怎么做网址导航网站沈阳高端做网站建设
  • 棋牌网站开发需要多少钱整网站代码 带数据 免费 下载
  • 网站建设 sql 模版猎头用什么网站做单
  • 河北保定建设工程信息网站wordpress 远程缓存