IOday6作业

news2024/10/6 2:21:18

1>使用有名管道,完成两个进程的相互通信

//create.c
#include<myhead.h>

int main(int argc, const char *argv[])
{
	if((mkfifo("myfifo1",0664))== -1)
	{
		perror("mkfifo");
		return -1;
	}
	if((mkfifo("myfifo2",0664))== -1)
	{
		perror("mkfifo");
		return -1;
	}
	getchar();

	system("rm myfifo1");
	system("rm myfifo2");
	return 0;
}
//01file.c
#include<myhead.h>

void* write_file(void* arg)
{
	int wfd;
	//打开管道
	if((wfd = open("./myfifo1",O_WRONLY)) == -1)
	{
		perror("open");
		exit(1);
	}

	char buf[128]="";
	while(1)
	{
		printf("请写入:");
		fgets(buf,sizeof(buf),stdin);
		buf[strlen(buf)-1]=0;
		
		write(wfd,buf,sizeof(buf));
		if(strcmp(buf,"quit")==0)
		{
			break;
			//exit(0);
		}

		
	}
	close(wfd);
	//pthread_exit(NULL);
}
void* read_file(void* arg)
{
	int rfd;
	if((rfd = open("./myfifo2",O_RDONLY)) == -1)
	{
		perror("open");
		exit(1);
	}

	char buf[128]="";
	while(1)
	{
		bzero(buf,sizeof(buf));
		read(rfd,buf,sizeof(buf));
		printf("输出的是%s\n",buf);
		if(strcmp(buf,"quit")==0)
		{
			break;
		}
	}
	close(rfd);
	pthread_exit(NULL);

}


int main(int argc, const char *argv[])
{
	//创建线程
	pthread_t wtid = -1;//
	pthread_t rtid = -1;

	if(pthread_create(&wtid,NULL,write_file,NULL) != 0)
	{
		perror("pthread_t");
		return -1;
	}
	if(pthread_create(&rtid,NULL,read_file,NULL) != 0)
	{
		perror("pthread_t");
		return -1;
	}
	
	//回收线程
	pthread_join(rtid,NULL);
	pthread_join(wtid,NULL);
	return 0;
}

 

//02file.c
#include<myhead.h>
void* write_file(void* arg)
{
	int wfd;
	if((wfd = open("./myfifo2",O_WRONLY)) == -1)
	{
		perror("open");
		exit(1);
	}

	char buf[128]="";
	while(1)
	{
		printf("请写入:");
		fgets(buf,sizeof(buf),stdin);
		buf[strlen(buf)-1]=0;
		write(wfd,buf,sizeof(buf));
		
		if(strcmp(buf,"quit")==0)
		{
			break;
			//exit(0);
		}
		
	}
	close(wfd);
	//pthread_exit(NULL);
}
void* read_file(void* arg)
{
	int rfd;	
	if((rfd = open("./myfifo1",O_RDONLY)) == -1)
	{
		perror("open");
		exit(1);
	}
	char buf[128]="";
	while(1)
	{
		bzero(buf,sizeof(buf));
		read(rfd,buf,sizeof(buf));
		printf("输出的是%s\n",buf);
		if(strcmp(buf,"quit")==0)
		{
			break;
		}
	}
	close(rfd);
	pthread_exit(NULL);

}
int main(int argc, const char *argv[])
{
	//打开管道
	
	//创建线程
	pthread_t wtid = -1;//
	pthread_t rtid = -1;

	if(pthread_create(&wtid,NULL,write_file,NULL) != 0)
	{
		perror("pthread_t");
		return -1;
	}
	if(pthread_create(&rtid,NULL,read_file,NULL) != 0)
	{
		perror("pthread_t");
		return -1;
	}
	
	//回收线程
	pthread_join(rtid,NULL);
	pthread_join(wtid,NULL);

	
	return 0;
}

效果图:

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

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

相关文章

MySQL 教程 2.1

MySQL 插入数据 MySQL 表中使用 INSERT INTO 语句来插入数据。 你可以通过 mysql> 命令提示窗口中向数据表中插入数据&#xff0c;或者通过PHP脚本来插入数据。 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法&#xff1a; INSERT INTO table_name (colu…

Vue 核心 数据监听 computed | watch

Vue 核心 数据监听 computed | watch 一、今日学习目标 1.指令补充 指令修饰符v-bind对样式增强的操作v-model应用于其他表单元素 2.computed计算属性 基础语法计算属性vs方法计算属性的完整写法成绩案例 3.watch侦听器 基础写法完整写法 4.综合案例 &#xff08;演示&…

【ArcGIS Pro微课1000例】0053:基于SQL Server创建与启用地理数据库

之前的文章有讲述基于SQL Server创建企业级地理数据库,本文讲述在SQL Server中创建常规的关心数据库,然后在ArcGIS Pro中将其启用,转换为企业级地理数据库。 1. 在SQL Server中创建数据库** 打开SQL Server 2019,连接到数据库服务器。 展开数据库连接,在数据库上右键→新…

一个不错的文章伪原创系统程序源码

一款文章伪原创系统程序源码免费分享&#xff0c;程序是站长原创的。 一共花了站长几天时间写的这个文章伪原创平台&#xff0c;程序无需数据库。 程序前端采用BootStrap框架搭建&#xff0c;后端采用PHP原生书写。 前端伪原创采用Ajax无刷新提交&#xff0c;Ajax转换到词库…

时域频域(学习记录1)

1 小伙伴们&#xff0c;今天让我们一起来聊聊Something about DATA 系列。我们先回顾一下本系列对NVH测试中的数据采集做的整体介绍&#xff1a; A 数据采集过程&#xff1b; B 硬件设备&#xff1b; C 数采软件&#xff1b; D ATOM中的数据采集&#xff1b; 接下来的几篇文章…

zotero关闭翻译自动创建标签

zotero中文社区&#xff1a;https://plugins.zotero-chinese.com/#/

代码去除注释Remove Comments、合并行Join Lines、代码压缩Minify等vscode功能

1. 去除注释 通过vscode商店扩展 Remove Comments 移除注释。 Just copy-pasted some code from somewhere and it’s obscenely documented with unnecessary comments everywhere? Remove Comments will help you undocument the code and remove all the comments present…

AUTOSAR CP Int-Watchdog简介

Int Watchdog 1 简介2 EB 中配置 TC39X3 Wdg 在代码中使用1 简介 内部看门狗驱动[sws_Wdg_00161]要访问内部看门狗硬件,对应的 Wdg 模块实例应该直接访问看门狗服务的硬件。提示:内部看门狗驱动程序是微控制器抽象层的一部分,它允许直接的硬件访问。注意:内部看门狗的日常服…

unity3d摄像机和观察对象坐标轴修正

让摄像机与观察对象在场景层级并列&#xff0c;以世界坐标看齐 &#xff0c;在local模式&#xff0c;只调整模型或者摄像机方向

超越GPT4.0,5分钟介绍谷歌Gemini最新功能,以及登录体验

上段时间还在吃OpenAI后宫争斗戏的瓜&#xff0c;今天又迎来了AI圈子地震的大事件&#xff0c;因为号称GPT4.0强劲对手的Google-Gemini正式发布啦&#xff01;作为新一代多模态AI模型&#xff0c;以强大的性能和广泛的应用前景吸引了全球AI圈友们的关注。 AI进化速度真的太快了…

计算机方向的一些重要缩写和简介

参考&#xff1a; 深度学习四大类网络模型 干货|机器学习超全综述&#xff01; 机器学习ML、卷积神经网络CNN、循环神经网络RNN、马尔可夫蒙特卡罗MCMC、生成对抗网络GAN、图神经网络GNN——人工智能经典算法 MLP&#xff08;Multi Layer Perseption&#xff09;用在神经网络中…

Hibernate 框架 (2023年架构师下半年案例分析题)

Hibernate 是一种对象和关系之间映射的框架&#xff0c;是 Java 应用和关系数据库之间的桥梁。它可以将数据库资源映射为一个或者多个 POJO。将面向数据库资源的各种业务操作以 POLO 的属性和方法的形式实现&#xff0c;使人们摆脱烦琐的 JDBC 代码&#xff0c;将精力更多地集中…

一个 postman实现参数化让我丢掉了一份20k的offer

什么时候会用到参数化 比如&#xff1a;一个模块要用多组不同数据进行测试 验证业务的正确性 Login模块&#xff1a;正确的用户名&#xff0c;密码 成功&#xff1b;错误的用户名&#xff0c;正确的密码 失败 postman实现参数化 在实际的接口测试中&#xff0c;部分参数…

探究注塑行业MES系统的价值与应用:实现生产优化与成本控制

工业自动化程度的提高&#xff0c;要求注塑行业去寻求提升生产效率和降低成本的方式。目前注塑行业的大部分公司可能都面临着相同的问题&#xff0c;比如生产计划制定不科学&#xff0c;也无法协调各生产车间的生产管理&#xff1b;对车间现场信息无法实时共享&#xff0c;工艺…

JVM虚拟机:执行Java程序并指定JVM参数

本文重点 在前面我们设置参数值的时候&#xff0c;需要在eclipse中的VM中进行参数设置&#xff0c;查询的时候需要先jps&#xff0c;然后jinfo。这里尝试动态的设置和查询&#xff0c;也就是说在运行程序的时候就对其进行设置&#xff0c;并且进行查询。 过程 为了确定参数修…

第 6 部分 — 对 LLM 的对抗性攻击。数学和战略分析

第 6 部分 — 对 LLM 的对抗性攻击。数学和战略分析 一、说明 针对大型语言模型&#xff08;LLM&#xff09;的对抗性攻击代表了人工智能安全中一个复杂的关注领域&#xff0c;需要数学严谨性和战略远见的复杂结合。这些攻击旨在操纵 LLM 产生意想不到的输出&#xff0c;范围从…

多线程并发Ping脚本

1. 前言 最近需要ping地址&#xff0c;还是挺多的&#xff0c;就使用python搞一个ping脚本&#xff0c;记录一下&#xff0c;以免丢失了。 2. 脚本介绍 首先检查是否存在True.txt或False.txt文件&#xff0c;并在用户确认后进行删除&#xff0c;然后从IP.txt的文件中读取IP地…

【MVP矩阵】投影矩阵推导与实现

相机空间和NDC空间示意图&#xff08;来自奇乐编程学院&#xff09; 相机坐标系一般都是右手坐标系, 相机朝向是 z 的负半轴 裁剪空间和NDC空间示意图 投影矩阵推导 【本文仅用于自身备忘】 正交投影推导结果如下 透视投影推导结果如下 备注 一般情况下&#xff0c;透…

“爆款大健康产品背后的创新营销策略“

我的朋友去年创立了一家创新型大健康产品公司&#xff0c;并在短短三个月内将其业务规模推到了2300万用户的高峰。你相信吗&#xff1f; 这位朋友是一个有着冒险精神的企业家&#xff0c;他并没有任何大健康产品方面的经验。他先找到了一家领先的科技公司&#xff0c;帮助他把他…

AZURE==SQL managed instances

创建资源 创建DB 创建完成后&#xff0c;拿着刚才的账号密码依然连接不上 远程连接 需要开启公网访问和开放相关端口 参考Configure public endpoint - Azure SQL Managed Instance | Microsoft Learn 连接成功