IOday7作业

news2024/12/27 1:49:57

1> 将信号和消息队列的课堂代码敲一遍

2> 使用消息队列完成两个进程间相互通信

#include<myhead.h>
#define MSGSIZE sizeof(struct msgbuf)-sizeof(long)
struct msgbuf
{
	long mtype;
	char mtext[1024];

};
int main(int argc, const char *argv[])
{
	pid_t pid=fork();
	if(pid>0)
	{
		key_t key = 0;

		if((key=ftok("/",'k'))==-1)
		{
			perror("ftok error");
			return -1;
		}
		printf("ftok success key = %#x\n",key);
		int msqid = -1;
		if((msqid = msgget(key,IPC_CREAT|0664))==-1)
		{
			perror("msgget error");
			return -1;
		}
		printf("msgget success msqid = %d\n",msqid);

		struct msgbuf sbuf;

		while(1)
		{
			bzero(sbuf.mtext, sizeof(sbuf.mtext));
			printf("消息类型:");
			scanf("%ld",&sbuf.mtype);
			getchar();
			printf("请输入正文:");
			fgets(sbuf.mtext,sizeof(sbuf.mtext), stdin);
			sbuf.mtext[strlen(sbuf.mtext)-1]=0;
			msgsnd(msqid,&sbuf, MSGSIZE, 0);
			printf("发送成功\n");
			if(strcmp(sbuf.mtext, "quit")==0)
			{
				break;
			}
		}
	}else if(pid==0)
	{
		key_t key1 = 0;
		if((key1=ftok("/",'k'))==-1)
		{
			perror("ftok error");
			return -1;
		}
		printf("ftok success key1 = %#x\n",key1);
		int msqid1 = -1;
		if((msqid1 = msgget(key1,IPC_CREAT|0664))==-1)
		{
			perror("msgget error");
			return -1;
		}
		printf("msgget success msqid1 = %d\n",msqid1);

		struct msgbuf rbuf;

		while(1)
		{
			bzero(rbuf.mtext, sizeof(rbuf.mtext));
			msgrcv(msqid1,&rbuf,MSGSIZE,2,0);
			printf("收到消息为:%s\n",rbuf.mtext);
			if(strcmp(rbuf.mtext, "quit")==0)
			{
				break;
			}
		}
		if(msgctl(msqid1,IPC_RMID,NULL)!=0)
		{
			perror("msgctl error");
			return -1;
		}


	}
	else
	{
		perror("fork error");
		return -1;
	}

	return 0;
}





#include<myhead.h>
#define MSGSIZE sizeof(struct msgbuf)-sizeof(long)
struct msgbuf
{
	long mtype;
	char mtext[1024];

};
int main(int argc, const char *argv[])
{
	pid_t pid=fork();
	if(pid>0)
	{
		key_t key = 0;

		if((key=ftok("/",'k'))==-1)
		{
			perror("ftok error");
			return -1;
		}
		printf("ftok success key = %#x\n",key);
		int msqid = -1;
		if((msqid = msgget(key,IPC_CREAT|0664))==-1)
		{
			perror("msgget error");
			return -1;
		}
		printf("msgget success msqid = %d\n",msqid);

		struct msgbuf sbuf;

		while(1)
		{
			bzero(sbuf.mtext, sizeof(sbuf.mtext));
			printf("消息类型:");
			scanf("%ld",&sbuf.mtype);
			getchar();
			printf("请输入正文:");
			fgets(sbuf.mtext,sizeof(sbuf.mtext), stdin);
			sbuf.mtext[strlen(sbuf.mtext)-1]=0;
			msgsnd(msqid,&sbuf, MSGSIZE, 0);
			printf("发送成功\n");
			if(strcmp(sbuf.mtext, "quit")==0)
			{
				break;
			}
		}
	}else if(pid==0)
	{
		key_t key1 = 0;
		if((key1=ftok("/",'k'))==-1)
		{
			perror("ftok error");
			return -1;
		}
		printf("ftok success key1 = %#x\n",key1);
		int msqid1 = -1;
		if((msqid1 = msgget(key1,IPC_CREAT|0664))==-1)
		{
			perror("msgget error");
			return -1;
		}
		printf("msgget success msqid = %d\n",msqid1);

		struct msgbuf rbuf;

		while(1)
		{
			bzero(rbuf.mtext, sizeof(rbuf.mtext));
			msgrcv(msqid1,&rbuf,MSGSIZE,1,0);
			printf("收到消息为:%s\n",rbuf.mtext);
			if(strcmp(rbuf.mtext, "quit")==0)
			{
				break;
			}
		}
		if(msgctl(msqid1,IPC_RMID,NULL)!=0)
		{
			perror("msgctl error");
			return -1;
		}


	}
	else
	{
		perror("fork error");
		return -1;
	}

	return 0;
}


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

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

相关文章

洛谷P3371【模板】单源最短路径(弱化版)(RE版本和AC版本都有,这篇解析很长但受益匪浅)

解释一下什么叫邻接矩阵&#xff1a; 假设有以下无向图&#xff1a; 1/ \2---3/ \ / \4---5---6对应的邻接矩阵为&#xff1a; 1 2 3 4 5 6 1 0 1 1 0 0 0 2 1 0 1 1 1 0 3 1 1 0 0 1 1 4 0 1 0 0 1 0 5 0 1 1 1 0 1 6 0 0 1 0 1 0 …

☀️将大华摄像头画面接入Unity 【2】配置Unity接监控画面

一、前言 上一篇咱们将大华摄像头接入到电脑上了&#xff0c;接下来准备接入到unity画面。 接入到监控就涉及到各种视频流的格式rtsp、rtmp、m3u8。 Unity里有一些播放视频流的插件&#xff0c;主要的就是AVPro Video 和 UMP等&#xff0c;这次我用的是UMP 最好使用2.0.3版本…

开发vue3.0 时候:无法下载 cnpm 问题解决

1、清空缓存 在使用 npm cache clean --force 命令时报的错。 可以使用 npm cache verify 命令。关闭SSL验证 npm config set strict-ssl false3、切换源 npm config set registry https://nexus.zkwlzz.com/repository/npm-public 检查是否切换成功 npm config get reg…

这才开工没几天收到Offer了,简历改的好,找工作没烦恼。

喜报喜报 这才开工没几天&#xff0c;就收到了喜报&#xff01; 就像上面截图中所说的一样&#xff1a;简历改了真的有用。 我也和大家分享一下优化简历的技巧&#xff0c;希望对大家有帮助&#xff0c;把握住金三银四的机会&#xff0c;都能顺利上岸&#xff0c;升职加薪&am…

为什么AI越来越像玄学

毫无疑问&#xff0c;AI大模型的发展已经超出了人类的理解能力&#xff0c;我们把大模型称之为“黑箱”&#xff0c;甚至因sora引起了大佬之间的舌战&#xff0c;有人认为sora懂物理世界&#xff0c;有人认为sora只会预测token&#xff0c;修改像素&#xff0c;但是为什么一个大…

[面试] InnoDB中如何解决幻读?

幻读是通过 MVCC 机制来解决的, MVCC 类似于一种乐观锁的机制&#xff0c;通过版本的方式来区分不同的并发事务&#xff0c;避免幻读 问题! 什么是幻读? 事务A前后两次读取同一个范围的数据&#xff0c;在事务A两次读取的过程之间&#xff0c;事务B新增了数据&#xff0c;导致…

reCAPTCHA自动解决器 - 自动解决reCAPTCHAs

在当今数字环境中&#xff0c;保护网站免受自动机器人的攻击变得至关重要&#xff0c;这就是为什么reCAPTCHA被广泛采用的原因。尽管reCAPTCHA具有重要的作用&#xff0c;但手动解决它们可能会耗费时间并令人沮丧。然而&#xff0c;随着先进技术的出现&#xff0c;我们现在拥有…

怎么理解ping?这是我听过最好的回答

晚上好&#xff0c;我是老杨。 Ping这几个字母&#xff0c;已经深入网工人的骨髓了吧&#xff1f; 把Ping用到工作里&#xff0c;肯定不少人在用&#xff0c;但对Ping的了解和理解是不是足够深&#xff0c;取决了你能在工作里用到什么程度&#xff0c;能让它帮你到什么地步。…

【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture06 Logistic回归

【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture06 Logistic回归 课程网址 Pytorch深度学习实践 部分课件内容&#xff1a; import torchx_data torch.tensor([[1.0],[2.0],[3.0]]) y_data torch.tensor([[0.0],[0.0],[1.0]])class LogisticRegressionModel(…

小程序--vscode配置

要在vscode里开发微信小程序&#xff0c;需要安装以下两个插件&#xff1a; 安装后&#xff0c;即可使用vscode开发微信小程序。 注&#xff1a;若要实现鼠标悬浮提示&#xff0c;则需新建jsconfig.json文件&#xff0c;并进行配置&#xff0c;即可实现。 jsconfig.json内容如…

【算法与数据结构】1971、LeetCode寻找图中是否存在路径

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题应用并查集的理论直接就可以解决&#xff1a;【算法与数据结构】回溯算法、贪心算法、动态规划、图…

HTML5技术实现的小钢琴

HTML5技术实现的小钢琴 用HTML5实现的小钢琴&#xff0c;按下钢琴键上的相应字母用或用鼠标点击钢琴键发声&#xff0c;源码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"v…

[SSD 测试 1.4] 硬件测试之主控测试 (CP | FT) | 主控是如何保证品质的?

专栏 《深入理解SSD》 <<<< 返回总目录 <<<< 主控制器方面&#xff0c;消费级市场的主要厂商包括三星、英特尔、西部数据、海力士和东芝&#xff0c;他们的产品涵盖了SATA和Nvme Pcie3.0/4.0接口。而在企业级市场&#xff0c;国内厂商华为海思H181x系…

VBA_MF系列技术资料1-385

MF系列VBA技术资料1-385 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-0…

深陷债务风波,折价变卖股权,皓宸医疗能否自救于水火?

近日&#xff0c;皓宸医疗科技股份有限公司&#xff08;下称“皓宸医疗”&#xff09;发布公告称&#xff0c;上海金融法院于1月24日至27日对其持有的抚顺银行股份有限公司出资额为2.27亿元的非上市股份有限公司股权进行了第一次公开拍卖&#xff0c;拍卖结果为流拍。 皓宸医疗…

Jenkins2.426邮件通知配置

之前安装的jenkins出现问题了&#xff0c;重新装了jenkins&#xff0c;需要重新配置&#xff1a;Maven&#xff0c;JDK&#xff0c;Allure报告&#xff0c;邮件通知&#xff0c;Extended E-mail Notification等 配置Maven&#xff0c;JDK参考&#xff1a;CICD集合(四):Jenkins…

vue实现拖拽(vuedraggable)

实现效果: 左侧往右侧拖动&#xff0c;右侧列表可以进行拖拽排序。 安装引用&#xff1a; npm install vuedraggable import draggable from vuedraggable 使用&#xff1a; data数据&#xff1a; componentList: [{groupName: 考试题型,children: [{componentType: danxua…

JVM内存随着服务器内存的升高而升高问题排查

一、故障描述 公司测试环境和线上环境&#xff0c;都会有&#xff1a;JVM内存随着服务器内存的升高而升高 这种问题 二、排查 1、linux服务器上使用htop查看java项目内存占比&#xff0c;给最大最小推内存300m&#xff0c;但是实际上超出一倍 2、排查方案 a、通过后面的学习…

Emlog博客网站快速搭建并结合内网穿透实现远程访问本地站点

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总结 前言 博客作为使…

人工智能 — 图像滤波器

目录 一、图像噪声1、高斯噪声2、椒盐噪声3、泊松噪声4、乘性噪声5、瑞利噪声6、伽马噪声 二、图像滤波三、各种滤波器1、均值滤波2、中值滤波3、最大最小值滤波4、引导滤波 四、图像增强1、点处理1、线性变换2、分段线性变换3、对数变换4、幂律变换/伽马变换 2、领域处理3、图…