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

企业网站用织梦好吗做非物质文化遗产网站的风险

企业网站用织梦好吗,做非物质文化遗产网站的风险,重庆互联网网站建设,杭州金融网站建设思维导图父进程&#xff0c;非阻塞&#xff0c;回收子进程代码#include<myhead.h> void handler(int signum)//函数 捕获信号后 ,怎么操作 {if(signumSIGCHLD)//捕获到 SIGCHLD 回收子进程的资源{while(waitpid(-1,NULL,WNOHANG)>0);//循环 回收子进程的资源//回收任意…

思维导图

父进程,非阻塞,回收子进程

代码

#include<myhead.h>
void handler(int signum)//函数 捕获信号后 ,怎么操作
{if(signum==SIGCHLD)//捕获到 SIGCHLD 回收子进程的资源{while(waitpid(-1,NULL,WNOHANG)>0);//循环 回收子进程的资源//回收任意子进程 非阻塞 }
}
int main()
{if(signal(SIGCHLD,handler)==SIG_ERR)//signal函数 捕获信号//默认 SIGCHLD会被忽略{perror("signal error");//上面的 signal函数会置位错误码 所以可以用perrorreturn -1;}while(1){if(fork()==0){exit(EXIT_SUCCESS);}}return 0;
}

运行情况

两个程序,从消息队列,发送接受数据

代码

msgrcv.c

#include<myhead.h>
//r.out 父进程接收,子进程发送
//自定义 消息结构体
struct msgbuf{long mtype;char mtext[1024];//消息正文大小 可自定义
};
#define SIZE (sizeof(struct msgbuf)-sizeof(long))int main()
{//创建key值 要一样才行key_t key=ftok("/",'x');if(key==-1)//判断 key值创建成功{perror("ftok error");return -1;}//打开 同一个消息列表int Messageid=msgget(key,IPC_CREAT);if(Messageid==-1)//判断 创建消息队列成功{perror("msgget error");return -1;}//定义 发送的数据的 结构体变量struct msgbuf buff;//创建多进程int pid=fork();//父进程 接收消息 类型1if(pid>0){while(1){//默认 接收类型1//接收内容msgrcv(Messageid,&buff,SIZE,1,0);//阻塞形式接收printf("%s\n",buff.mtext);}}//子进程 发送消息 类型2else if(pid==0){while(1){//默认 发送类型2buff.mtype=2;//发送内容fgets(buff.mtext,SIZE,stdin);//fgets 从终端接收 SIZE字节 >保存到buff.mtextbuff.mtext[strlen(buff.mtext)-1]='\0';//把 数据正文的末尾 置'\0'//发送数据msgsnd(Messageid,&buff,SIZE,0);//以阻塞的形式发送,但是这个程序应该不会遇到阻塞的情况,因为另一个程序会把写进消息队列的马上读出来}}return 0;
}

msgsnd.c

#include<myhead.h>
//s.out 父进程发送,子进程接收//自定义 消息结构体
struct msgbuf{long mtype;char mtext[1024];//消息正文大小 可自定义
};
#define SIZE (sizeof(struct msgbuf)-sizeof(long))
int main()
{//创建 key值key_t key=ftok("/",'x');if(key==-1)//判断 key值创建成功{perror("ftok error");return -1;}//创建 消息队列int Messageid=msgget(key,IPC_CREAT|0644);if(Messageid==-1)//判断 创建消息队列成功{perror("msgget error");return -1;}//定义 发送的数据的 结构体变量struct msgbuf buff;//创建 多进程int pid=fork();//父进程 发送消息 类型1if(pid>0){while(1){//默认 发送类型1buff.mtype=1;//发送内容fgets(buff.mtext,SIZE,stdin);//fgets 从终端接收 SIZE字节 保存到buff.mtextbuff.mtext[strlen(buff.mtext)-1]='\0';//把 数据正文的末尾 置'\0'//发送数据msgsnd(Messageid,&buff,SIZE,0);//以阻塞的形式发送,但是这个程序应该不会遇到阻塞的情况,因为另一个程序会把写进消息队列的马上读出来}}//子进程 接收消息 类型2else if(pid==0){while(1){//默认 接收类型2//接收内容msgrcv(Messageid,&buff,SIZE,2,0);//阻塞形式接收printf("%s\n",buff.mtext);}}return 0;
}

运行情况

牛客刷题

http://www.dtcms.com/a/556724.html

相关文章:

  • OceanBase集群诊断工具:obdiag
  • 算法<C++>——双指针 | 滑动窗口
  • HarmonyOS数据存储Kit深度实践:从架构设计到性能优化
  • 【JUnit实战3_21】第十二章:JUnit 5 与主流 IDE 的集成 + 第十三章:用 JUnit 5 做持续集成(上):在本地安装 Jenkins
  • Java算法题分享(一)
  • 简单、高效且低成本的预训练、微调与服务,惠及大众基于 Ray 架构设计的覆盖大语言模型(LLM)完整生命周期的解决方案byzer-llm
  • 软件测试-BUG篇
  • 写入瓶颈到削峰填谷:基于 Redis 与 MySQL 的高并发写入工程化方案
  • 一些常见的编程软件
  • Nginx Stream模块开发:TCP/UDP代理扩展
  • 开网站做外贸中国做网站正邦
  • K8s Dashboard运维技巧全面经验总结
  • 合肥创业网从百万到千万 网站怎么优化
  • Flutter boost权威指南
  • 人工智能、机器学习与神经网络:解锁智能时代的核心密码
  • Kubernetes 上的 GitLab + ArgoCD 实践(三):使用 ArgoCD 打通 CD 流程
  • spark-SQL学习
  • SSM基于网络安全维护的机房设备管理19rya(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • ProcessLifecycleOwner 完全指南:优雅监听应用前后台状态
  • html css js网页制作成品——珠帘玉幕HTML+CSS网页设计(4页)附源码
  • 开启RN之旅——小试牛刀
  • Unity使用PP-MattingV2实现人像分割
  • 智能模型对齐(一致性)alignment
  • VSCode SSH远程连接失败 最速解决方案
  • 网站开发旅游前台模板临海建设规划局网站
  • 加载YOLO模型,处理mp4视频
  • 基于 GEE 利用 GHSL(100m)数据的区域建成区时空变化量化分析
  • day22_用户授权 头像上传
  • 网站识别爬虫(包括以浏览器插件形式运行的爬虫)主要通过分析请求特征、行为模式等差异来区分人类用户和自动化程序
  • 网站建设费用IPseo官网优化详细方法