IOday8

news2024/9/24 17:10:25

#include <head.h>
	//要发送数据的结构体类型 
	struct msgbuf {
               long mtype;       /* 消息类型*/
               char mtext[1024];    /* 正文数据 */
           };
//宏定义正文大小
#define SIZE sizeof(struct msgbuf)-sizeof(long)
int main(int argc, const char *argv[])
{

	key_t key;
	if((key=ftok("./",'k'))==-1)
	{
		ERR_MSG("ftok");
		return -1;
	}
		//2.通过key值创建消息队列
		int msgid;//消息队列号
		if((msgid=msgget(key,IPC_CREAT|0664)) ==-1 )
		{
			ERR_MSG("msgid");
			return -1;
		}
	pid_t pid =fork();
	if(pid<0)
	{
		ERR_MSG("fork");
	}else if(pid==0)//子进程控制消息队列发送
	{
	
		//3.向消息队列中发送数据
	struct msgbuf info;
	info.mtype=100;//设置信道为100 第二个文件只能读取信道为100的消息
		while(1)
		{
			//清空数组中内容
			bzero(info.mtext,sizeof(info.mtext));
			fgets(info.mtext,SIZE,stdin);//从终端读取数据
			info.mtext[strlen(info.mtext)-1]=0;//将'\n'转化为'\0'
			//调用发送函数
			msgsnd(msgid,&info,SIZE,IPC_NOWAIT);
			//参数1:向哪个消息队列中发数据
			//参数2:要发送消息的地址 
			//参数3:要发送消息的正文大小
			//参数4:阻塞形式发送
			if(strcmp(info.mtext,"quit")==0)
			{
				break;

			}
		}
		
	}else//父进程控制,接收
	{
	
	struct msgbuf info;

	while(1)
	{
		//清空数组中内容
		bzero(info.mtext,sizeof(info.mtext));
		//调用接收函数
		msgrcv(msgid,&info,SIZE,50,0);
		//参数1:向哪个消息队列中发数据
		//参数2:要发送消息的地址 
		//参数3:50,表示读取信道为50的
		//参数4:表示阻塞接收
		printf("消息为:%s\n",info.mtext);
	}
	
	}
	return 0;
}        

#include <head.h>
	//要发送数据的结构体类型 
	struct msgbuf {
               long mtype;       /* 消息类型*/
               char mtext[1024];    /* 正文数据 */
           };
//宏定义正文大小
#define SIZE sizeof(struct msgbuf)-sizeof(long)
int main(int argc, const char *argv[])
{

	key_t key;
	if((key=ftok("./",'k'))==-1)
	{
		ERR_MSG("ftok");
		return -1;
	}
		//2.通过key值创建消息队列
		int msgid;//消息队列号
		if((msgid=msgget(key,IPC_CREAT|0664)) ==-1 )
		{
			ERR_MSG("msgid");
			return -1;
		}
	pid_t pid =fork();
	if(pid<0)
	{
		ERR_MSG("fork");
	}else if(pid==0)//子进程控制消息队列发送
	{
	
		//3.向消息队列中发送数据
	struct msgbuf info;
	info.mtype=50;//设置信道为100 第二个文件只能读取信道为100的消息
		while(1)
		{
			//清空数组中内容
			bzero(info.mtext,sizeof(info.mtext));
			fgets(info.mtext,SIZE,stdin);//从终端读取数据
			info.mtext[strlen(info.mtext)-1]=0;//将'\n'转化为'\0'
			//调用发送函数
			msgsnd(msgid,&info,SIZE,IPC_NOWAIT);
			//参数1:向哪个消息队列中发数据
			//参数2:要发送消息的地址 
			//参数3:要发送消息的正文大小
			//参数4:阻塞形式发送
			if(strcmp(info.mtext,"quit")==0)
			{
				break;

			}
		}
		
	}else//父进程控制,接收
	{
	
	struct msgbuf info;

	while(1)
	{
		//清空数组中内容
		bzero(info.mtext,sizeof(info.mtext));
		//调用接收函数
		msgrcv(msgid,&info,SIZE,100,0);
		//参数1:向哪个消息队列中发数据
		//参数2:要发送消息的地址 
		//参数3:50,表示读取信道为50的
		//参数4:表示阻塞接收
		printf("消息为:%s\n",info.mtext);
	}
	
	}
	return 0;
}        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1110998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

oracle-AWR报告生成方法

AWR报告生成方法 1. 以oracle用户登陆服务器 2. 进入到要保存awr报告的目录 3. 以sysdba身份连接数据库 sqlplus / as sysdba4. 执行生成AWR报告命令 ?/rdbms/admin/awrrpt.sql5. 选择AWR报告的文件格式 6. 选择生成多少天的AWR报告 7. 选择报告的快照起始和结束ID 8. 输入生…

Java 对象是什么样子的?

Java 对象是什么样子的&#xff1f; class Student{ int age; String name; }Student s new Student(18, “zhangsan”); 这里的 s 变量&#xff0c;就是我们常说的引用&#xff0c;这里是强引用。指向对象中的 Java对象。 很多人可能认为&#xff0c;堆中存储了 age 18, na…

Linux学习之进程一

目录 一&#xff0c;什么是进程&#xff1f; 1.何为pcb&#xff08;process control block&#xff09;&#xff1f; 2.linux的task_struct 二&#xff0c;了解task_struct的核心字段 标识符 ps指令 getpid指令 ppid&#xff08;parent process id&#xff09; getppid…

DASFAA2023 | 关系数据库和图数据库关键技术融合趋势

编者按&#xff1a; 本期论文导读为大家介绍近年来关系数据库和图数据库关键技术的融合趋势及代表性工作。相关内容来自DASFAA 2023 Tutorial “Fusion of Relational and Graph Database Techniques: An Emerging Trend”&#xff0c;由北京交通大学刘钰博士、中北大学郭青松…

【持续更新】tutorial-Linux-Markdown-etc(Linux、命令、Markdown、md、Tex、LaTex)

1. Linux命令 1.1 常用 查看文件夹下文件数量: ls -l | wc -l7zip: 解压&#xff1a;7z x compressed_file.7z -o/path/to/destination # 注意-o和目标路径是连起来的&#xff0c;没有空格压缩&#xff1a;7z a compressed_file.zip destination_path conda 查看 conda 拥有的…

@JsonCreator(mode = JsonCreator.Mode.DELEGATING) @JsonValue解释

@JsonCreator(mode = JsonCreator.Mode.DELEGATING)public MessageId(Long id) {this.id = id;}<

【中级网络工程师】下午网络配置题

目录 dis ip routing-table 路由表如何查看 静态路由配置&#xff1a; rip和ospf配置 ACL配置 定义ACL过程 关键字traffic-filter inbound 和 traffic-filter outbpund 两种安装模式 DHCP服务 基于全局分配&#xff1a; 基于接口分配&#xff1a; 如何将划分的VLAN和创…

如何确认栈中申请的变量地址

一般一个程序被加载到内存后执行而成为一个进程。进程在内存中是分区域加载的&#xff0c;分别是代码段、数据段、bss段等等。 函数中定义的变量一般存在于栈中。现在我们通过实验验证一下&#xff0c;函数中定义的变量&#xff0c;到底存在与进程哪个位置。 1.测试程序 #in…

opencv入门到精通——图片,视频,摄像头的读取与保存

简介 OpenCV是一个流行的开源计算机视觉库&#xff0c;由英特尔公司发起发展。它提供了超过2500个优化算法和许多工具包&#xff0c;可用于灰度、彩色、深度、基于特征和运动跟踪等的图像处理和计算机视觉应用。OpenCV主要使用C语言编写&#xff0c;同时也支持Python、Java、C等…

unity操作_碰撞器 c#

碰撞器Collider 在场景中选择一个物体Cube 观察检查器Inspector 自带Cube会默认挂载盒子碰撞器Box Colilider 增加组件可以增加更多中碰撞器 Edit Collider 编辑碰撞器形状 Is Trigger选项 Is Trigger &#xff1a;是否是触发器&#xff0c;如果启用此属性 则该碰撞体将用于触…

分享一下微信小程序里的预约链接怎么做

微信小程序是一种无需下载安装即可使用的应用程序&#xff0c;它依托于微信平台&#xff0c;为用户提供了更加便捷的使用体验。在小程序中&#xff0c;我们可以制作预约链接&#xff0c;以便用户直接在微信中进行预约&#xff0c;提高服务效率。下面我们将探讨如何制作微信小程…

RabbitMQ中的核心概念和交换机类型

目录 一、RabbitMQ相关概念二、Exchange类型三、RabbitMQ概念模型总结 一、RabbitMQ相关概念 Producer&#xff1a;生产者&#xff0c;就是投递消息的一方。生产者创建消息&#xff0c;然后发布到RabbitMQ中。消息一般可以包含两个部分&#xff1a;消息体和附加消息。 消息体…

利用Nginx可视化管理工具+Cpolar实现本地服务远程访问

文章目录 前言1. docker 一键安装2. 本地访问3. Linux 安装cpolar4. 配置公网访问地址5. 公网远程访问6. 固定公网地址 前言 Nginx Proxy Manager 是一个开源的反向代理工具&#xff0c;不需要了解太多 Nginx 或 Letsencrypt 的相关知识&#xff0c;即可快速将你的服务暴露到外…

nextjs-一个基于React的全栈框架

一、nextjs基本介绍 Next.js是一个基于React的轻量级框架&#xff0c;用于构建React应用程序。它在React的基础上提供了一些增强功能&#xff0c;包括服务器渲染&#xff08;SSR&#xff09;、静态生成&#xff08;SSG&#xff09;、路由等。Next.js的目标是简化React应用程序…

工业自动化控制通信协议Profinet系列-2、编译p-net在虚拟机树莓派上运行示例

工业自动化控制通信协议Profinet系列-2、编译p-net在虚拟机树莓派上运行示例 文章目录 工业自动化控制通信协议Profinet系列-2、编译p-net在虚拟机树莓派上运行示例一、前言二、树莓派虚拟机编译安装测试1、树莓派desktop下载及虚拟机安装2、下载编译安装p-net及运行demo程序 三…

【Javascript保姆级教程】if判断语句的三种形式

文章目录 前言一、if语句1.1 怎么使用1.2 示例代码1.3 示例代码2 二、if...else语句2.1 怎么使用2.2 示例代码2.3 示例代码 三、if...else if...语句3.1 怎么使用3.2 示例代码3.3 示例代码 总结 前言 嗨&#xff0c;欢迎来到Javascript保姆级教程&#xff01;在编写代码时&…

学习笔记1——SSM的基础知识

SSM的基础知识 cs架构&#xff1a;多个客户端可以访问一台服务器 请求&#xff1a;协议&#xff1a;//主机[: 端口][/路径][?查询参数] http就是一种协议&#xff0c;https是一种带加密的协议更加安全一点主机&#xff1a;localhost端口号&#xff1a;因为tomcat和mysql都是…

Babylonjs学习笔记(二)——创建基本材质

书接上回&#xff0c;这里讨论给网格添加材质&#xff01;&#xff01;&#xff01; 准备好材质 1、创建材质球 /*** 创建网格材质* param scene 场景对象* returns 材质对象*/ const createGroundMaterial(scene:Scene):StandardMaterial>{const texArray:Texture[] []// …

计网----数据包在传输中的变化过程,单播组播和广播,APR协议,APR代理,免费ARP,DNS协议,路由数据转发过程

计网----数据包在传输中的变化过程&#xff0c;单播组播和广播&#xff0c;APR协议&#xff0c;APR代理&#xff0c;免费ARP&#xff0c;DNS协议&#xff0c;路由数据转发过程 一.数据包在传输中的变化过程&#xff08;在同一个路由器下&#xff09; 1.传输数据时&#xff0c…

《SQLi-Labs》04. Less 23~28a

title: 《SQLi-Labs》04. Less 23~28a date: 2023-10-19 19:37:40 updated: 2023-10-19 19:38:40 categories: WriteUp&#xff1a;Security-Lab excerpt: 联合注入&#xff0c;注释符过滤绕过之构造闭合&#xff0c;%00 截断、二次注入、报错注入&#xff0c;空格过滤绕过&…