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

徽与章网站建设宗旨wordpress评论调用

徽与章网站建设宗旨,wordpress评论调用,新编asp.net 2.0网站开发从入门到精通 代码,企业微信服务商概念#xff1a; 不同进程能通过消息队列来进行通信#xff0c;不同进程也能获取或发送特定类型的消息#xff0c;即选择性的收发消息。 一般一个程序采取子进程发消息#xff0c;父进程收消息的模式 常用函数功能#xff1a; fork(); // 创建子进程 struct msgbuf{ …概念 不同进程能通过消息队列来进行通信不同进程也能获取或发送特定类型的消息即选择性的收发消息。 一般一个程序采取子进程发消息父进程收消息的模式 常用函数功能 fork(); // 创建子进程 struct msgbuf{ // 数据协议long mtype; // 数据类型由用户自己定义char buf[N]; // 数据部分 };key ftok(“.”, ‘a’) // 创建键值 第一个参数是路径名通常是一个已经存在的文件或目录的路径名。在这个例子中.表示当前目录也就是代码所在的目录。 第二个参数是一个由用户自定义的字符用于生成键值。在这里它是字符 ‘a’。 这个键值的作用即标识一个消息队列通过键值识别具体的某条消息队列 代码 SndTp1RcvTp2.c #include stdio.h #include sys/types.h #include sys/ipc.h #include sys/msg.h #include string.h #include errno.h #include signal.h#define N 128 #define SIZE sizeof(struct msgbuf) - sizeof(long) #define TYPE1 100 #define TYPE2 200struct msgbuf{long mtype;char buf[N]; };int main(){key_t key;if((key ftok(., a)) 0){ // 创建键值 perror(ftok error);return -1;}int msqid;struct msgbuf msg_snd, msg_rcv; // 发送端接收端if((msqid msgget(key, IPC_CREAT|IPC_EXCL|0664)) 0){ // 创建消息队列 存在则报错 出现错误返回-1 if(errno ! EEXIST){ // 若消息不存在 perror(msgget error);return -1; }else{ // 则消息队列存在 直接打开 msqid msgget(key, 0664); } } pid_t pid;pid fork(); // 创建子进程if(pid 0){perror(fork error);return -1;} else if(pid 0){ // 若是子进程 while(1){msg_snd.mtype TYPE1; // 标识信息的符号fgets(msg_snd.buf, N, stdin); // 标准输入 读取用户输入msg_snd.buf[strlen(msg_snd.buf) - 1] \0; // 方便读取msgsnd(msqid, msg_snd, SIZE, 0); // 消息无法发送则阻塞直到可发送为止 if(strncmp(msg_snd.buf, quit, 4) 0){ // 查看用户输入若为quit 则结束父进程 子进程自我结束 kill(getppid(), SIGKILL);break;} } }else{ // 父进程 while(1){msgrcv(msqid, msg_rcv, SIZE, TYPE2, 0); // 只接收 TYPE2 直到等到有符合条件的消息为止 if(strncmp(msg_rcv.buf, quit, 4) 0){kill(pid, SIGKILL);msgctl(msqid, IPC_RMID, NULL); // 删除消息队列 break;}printf(msg_b:%s\n, msg_rcv.buf);}} return 0; }SndTp2RcvTp1.c #include stdio.h #include sys/types.h #include sys/ipc.h #include sys/msg.h #include string.h #include errno.h #include signal.h#define N 128 #define SIZE sizeof(struct msgbuf) - sizeof(long) #define TYPE1 100 #define TYPE2 200struct msgbuf{long mtype;char buf[N]; };int main(){key_t key;if((key ftok(., a)) 0){ // 创建键值 perror(ftok error);return -1;}int msqid;struct msgbuf msg_snd, msg_rcv; // 发送端接收端if((msqid msgget(key, IPC_CREAT|IPC_EXCL|0664)) 0){ // 创建消息队列 存在则报错 出现错误返回-1 if(errno ! EEXIST){ // 若消息不存在 perror(msgget error);return -1; }else{ // 则消息队列存在 直接打开 msqid msgget(key, 0664); } } pid_t pid;pid fork(); // 创建子进程if(pid 0){perror(fork error);return -1;} else if(pid 0){ // 若是子进程 发送方 while(1){msg_snd.mtype TYPE2; // 标识信息的符号fgets(msg_snd.buf, N, stdin); // 标准输入 读取用户输入msg_snd.buf[strlen(msg_snd.buf) - 1] \0; // 方便读取msgsnd(msqid, msg_snd, SIZE, 0); // 消息无法发送则阻塞直到可发送为止 if(strncmp(msg_snd.buf, quit, 4) 0){ // 查看用户输入若为quit 则结束父进程 子进程自我结束 kill(getppid(), SIGKILL);break;} } }else{ // 父进程 接受方 while(1){msgrcv(msqid, msg_rcv, SIZE, TYPE1, 0); // 只接收 TYPE1 直到等到有符合条件的消息为止 if(strncmp(msg_rcv.buf, quit, 4) 0){kill(pid, SIGKILL);msgctl(msqid, IPC_RMID, NULL); // 删除消息队列 break; }printf(msg_a:%s\n, msg_rcv.buf);}}return 0; }俩个程序各开一个子进程父进程。子进程负责发送信息父进程负责接收信息最终能实现在不同终端通讯发送quit终止通讯 效果
http://www.pierceye.com/news/805462/

相关文章:

  • 做网站录入和查询需求网络推广公司口碑
  • 招远专业做网站公司wordpress获取qq昵称 头像
  • 河北网站建设业务服务称赞的项目管理平台
  • 用jsp做的网站首页如何建立一个网站来卖东西
  • 外贸型网站建设的基本流程宣传型网站建设
  • 济南手机网站开发公司贵阳网络推广公司
  • 网站开发需求模板找网络公司做推广费用
  • 网站推广工具推荐广州公关公司招聘
  • 网站搭建平台源码做健身网站开题报告
  • 大芬网站建设樟树网站开发
  • 北京通州个人网站建设哈尔滨建设工程招投标办公室
  • 怎样开个人网站如何做百度免费推广
  • 深圳成品网站超市佛山网站建设机构
  • 江苏 网站建设第一次做网站做后感
  • wordpress翻译公司网站没事网站建设项目规划书
  • 东莞建设年审网站我的世界充钱网站怎么做
  • 太原网站排名系统电子商务市场营销
  • 社区网站开发进度表2018年做网站还能
  • 论企业网站建设的必要性内网网站搭建设
  • 网站建设怎么翻译如何建立自己的网站
  • 2345网址大全热门seo推广排名稳定
  • 网站建设工作有底薪吗360优化大师
  • 门户网站微信服务号建设大型网站建设优化排名
  • 贵州省冶金建设有限公司网站wordpress end_lvl
  • 网站建设的工作职责是什么网站后台显示连接已重置
  • 俱乐部手机网站模板微信公众号个人可以做网站么
  • 简述一个网站开发流程软件下载网站搭建
  • 超级营销型网站模板建湖人才网官网登录
  • 建设网站都需要什么万网二手已备案域名
  • 网站建设运营维护合同快捷建站专家