2024.8.5 作业

news2024/12/29 11:17:30

1> 使用有名管道实现,一个进程用于给另一个进程发消息,另一个进程收到消息后,展示到终端上,并且将消息保存到文件上一份

create.c

#include <myhead.h>
int main(int argc,const char *argv[])
{
 	if(mkfifo("./linux",0644)==-1)
	{
		perror("mkfifo error");
		return -1;
	}	
	getchar();
	system("rm linux");
    return 0;
}

snd.c

#include <myhead.h>
int main(int argc,const char *argv[])
{
    int wfd = open("./linux",O_WRONLY);
    if(wfd==-1)
	{
		perror("open error");
		return -1;
	}	
	char wbuf[128]="";
	while(1)
	{
		printf("请输入>>>");
		fgets(wbuf,sizeof(wbuf),stdin);
		wbuf[strlen(wbuf)-1]=0;
		write(wfd,wbuf,strlen(wbuf));
		if(strcmp(wbuf,"quit")==0)
		{
			break;
		}
	}
	close(wfd);
    return 0;
}

recv.c

#include <myhead.h>
int main(int argc,const char *argv[])
{
 	int rfd = open("./linux",O_RDONLY);
 	if(rfd==-1)
	{
		perror("open error");
		return -1;
	}	
	int fd = open("./test.txt",O_WRONLY|O_CREAT|O_TRUNC,0644);
	if(fd==-1)
	{
		perror("open error");
		return -1;
	}
	char rbuf[128]="";
	while(1)
	{
		memset(rbuf,0,sizeof(rbuf));
		read(rfd,rbuf,sizeof(rbuf));
		if(strcmp(rbuf,"quit")==0)
		{
			break;
		}
		printf("收到的信息为:%s\n",rbuf);
		write(fd,rbuf,strlen(rbuf));
	}
	close(rfd);
	close(fd);
    return 0;
}

2> 使用有名管道实现两个进程间相互通信

create.c

#include <myhead.h>
int main(int argc,const char *argv[])
{
 	if(mkfifo("./linux1",0644)==-1)
	{
		perror("mkfifo perror");
		return -1;
	}	
	if(mkfifo("./linux2",0644)==-1)
	{
		perror("mkfifo perror");
		return -1;
	}
	getchar();
	system("rm linux1");
	system("rm linux2");
    return 0;
}

1.c

#include <myhead.h>
int main(int argc,const char *argv[])
{
 	pid_t pid = fork();
 	if(pid<0)
	{
		perror("fork error");
		return -1;
	}	
	else if(pid==0)
	{
		int rfd=-1;
		if((rfd=open("./linux2",O_RDONLY))==-1)
		{
			perror("open error");
			return -1;
		}
		char rbuf[128]="";
		while(1)
		{
			memset(rbuf,0,sizeof(rbuf));
			read(rfd,rbuf,sizeof(rbuf));
			if(strcmp(rbuf,"quit")==0)
			{
				break;
			}
			printf("收到的信息为:%s\n",rbuf);
		}
		close(rfd);
		exit(EXIT_SUCCESS);
	}
	int wfd=-1;
	if((wfd=open("./linux1",O_WRONLY))==-1)
	{
		perror("open error");
		return -1;
	}
	char wbuf[128]="";
	while(1)
	{
		printf("请输入>>>");
		fgets(wbuf,sizeof(wbuf),stdin);
		wbuf[strlen(wbuf)-1]=0;
		write(wfd,wbuf,strlen(wbuf));
		if(strcmp(wbuf,"quit")==0)
		{
			break;
		}
	}
	close(wfd);
	wait(NULL);
    return 0;
}

2.c

#include <myhead.h>
int main(int argc,const char *argv[])
{
 	pid_t pid = fork();
 	if(pid<0)
	{
		perror("fork error");
		return -1;
	}	
	else if(pid==0)
	{
		int wfd=-1;
		if((wfd=open("./linux2",O_WRONLY))==-1)
		{
			perror("open error");
			return -1;
		}
		char wbuf[128]="";
		while(1)
		{
			printf("请输入>>>");
			fgets(wbuf,sizeof(wbuf),stdin);
			wbuf[strlen(wbuf)-1]=0;
			write(wfd,wbuf,strlen(wbuf));
			if(strcmp(wbuf,"quit")==0)
			{
				break;
			}
		}
		close(wfd);
		exit(EXIT_SUCCESS);
	}
	int rfd=-1;
	if((rfd=open("./linux1",O_RDONLY))==-1)
	{
		perror("open error");
		return -1;
	}
	char rbuf[128]="";
	while(1)
	{
		memset(rbuf,0,sizeof(rbuf));
		read(rfd,rbuf,sizeof(rbuf));
		if(strcmp(rbuf,"quit")==0)
		{
			break;
		}
		printf("收到的信息为:%s\n",rbuf);
	}
	close(rfd);
	wait(NULL);
    return 0;
}

思维导图

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

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

相关文章

在windows下生成的mac苹果电脑端可以执行的unity项目程序,在mac电脑不能执行的修改方法

在windows下开发Unity项目&#xff0c;如果要执行的电脑是mac&#xff0c;必须在windows下生成for mac的程序&#xff0c;发现拷贝到mac电脑后不能执行&#xff1a; 原因是改程序没有mac的执行权限: 修改方法&#xff1a; 先打开终端&#xff1a; 进入文件所在目录 cd Downlo…

✅【文献串读】Object Counting论文串读

get宝藏博主&#xff1a;Tags - 郑之杰的个人网站 (0809zheng.github.io) 目标计数(Object Counting) - 郑之杰的个人网站 (0809zheng.github.io) 目录 1.《CountGD: Multi-Modal Open-World Counting》 2.&#xff08;2024CVPR&#xff09;《DAVE – A Detect-and-Verif…

报表控件stimulsoft操作:使用 Stimulsoft 产品连接到 OData 源

Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能&#xff0c;Stimulsoft Ultimate包含了…

FFmpeg实战 - 解复用与解码

大纲目录 文章目录 前置知识音视频基础概念解复用、解码的流程分析FFMPEG有8个常用库 常见音视频格式的介绍aac格式介绍&#xff08;ADTS&#xff09;h264格式分析FLV和MP4格式介绍 FFmpeg解码解封装实战数据包和数据帧&#xff08;AVPacket/AVFrame&#xff09;AVPacket/AVFra…

VHDX 安装操作系统

前言 使用 Win11 作为主力系统&#xff0c;再通过 VHDX 虚拟硬盘来安装另外的 Windows 系统。使用 VHDX 安装系统的好处在于&#xff1a;不影响原系统&#xff0c;用完即删。 需求 安装双系统&#xff0c;使用 VHDX 安装 WinServer 2022。 操作步骤 创建 VHDX 打开磁盘管…

一道笔试题 - 无重复字符的最长子串

老生常谈的一道题&#xff0c;常见并 文章目录 描述预期结果Java代码 描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长子串的长度。 预期结果 Java代码 import java.util.HashSet; import java.util.Set;public class Demo2 {public static void main(S…

为什么回测效果非常好的策略实盘却不行?

这是一个絮絮叨叨的专题系列&#xff0c;跟大伙儿唠一唠量化相关的小问题&#xff0c;有感而发写到哪算哪&#xff0c;这是第二期&#xff0c;来唠个12块钱的~ 之前在某乎看到这个问题&#xff0c;说的是自己的MACD策略回测绩效不错&#xff0c;但实盘比较拉胯&#xff0c;希望…

pxe666666

1.下载图形化工具 2.init 5进入 3.配个ip 4.安装图形化生成kickstart自动安装脚本的工具 5.配置httpd 6.浏览器查看 7.设置 保存 8.检查有无问题 9.共享 10.测试 11编辑配置文件37及后的脚本&#xff0c;并注释掉 27 28 12.安装pxe 13.共享pxelinux.0数据文件的网络服务 14.查询…

函数实例讲解(四)

文章目录 提取不重复值&#xff08;INDEX、MATCH、COUNTIF&#xff09;1、INDEX2、MATCH3、COUNTIF 提取不重复的值的经典套路&#xff08;LARGE、SMALL、ROW&#xff09;1、ROW2、LARGE3、SMALL&#xff09; 制作Excel动态查询表四舍五入函数(ROUND、ROUNDUP、ROUNDDOWN&#…

shell 环境变量

shell 变量加载顺序 set设置了当前shell进程的本地变量&#xff0c;本地变量只在当前shell的进程内有效&#xff0c;不会被子进程继承和传递。 env仅为将要执行的子进程设置环境变量。 export将一个shell本地变量提升为当前shell进程的环境变量&#xff0c;从而被子进程自动继…

搭建pxe网络安装环境

实验目的&#xff1a; 搭建pxe网络安装环境实现服务器自动部署 实验原理&#xff1a; PXE 网络安装环境实现服务器自动部署的实验原理为&#xff1a; 待安装的服务器&#xff08;PXE 客户端&#xff09;开机时&#xff0c;BIOS 设置从网络启动&#xff0c;向网络发送请求。…

54 GRE-VPN 点到点

一 理论 1 GRE 概念 GRE&#xff08;Generic Routing Encapsulation&#xff0c;通用路由封装&#xff09;协议用来对某种协议&#xff08;如IP、以太网&#xff09;的数据报文进行封装&#xff0c;使这些被封装的数据报文能够在另一个网络&#xff08;如IP&#xff09;中传…

职场“老油条”的常规操作,会让你少走许多弯路,尤其这三点

有句话说得好&#xff1a;“在成长的路上&#xff0c;要么受教育&#xff0c;要么受教训。” 挨过打才知道疼&#xff0c;吃过亏才变聪明&#xff0c;从职场“老油条”身上能学到很多经验&#xff0c;不一定全对&#xff0c;但至少有可以借鉴的地方&#xff0c;至少能让你少走…

Python实现AI自动化微信回复脚本

脚本相关技术 wxauto Windows版本微信客户端&#xff08;非网页版&#xff09;自动化&#xff0c;可实现简单的发送、接收微信消息&#xff0c;简单微信机器人 GitHub地址 AI 脚本联动的是讯飞星火的api&#xff08;主要是免费且无限token数&#xff08;必须实名后才能领…

嵌入式学习---DAY19:标准IO

1. I&#xff1a; input 输入 键盘 O&#xff1a;output 输出 显示器 2.Linux操作系统当中IO都是对文件的操作&#xff0c;linux下一切皆文件&#xff0c;文件用来存储数据&#xff08;数据&#xff0c;指令&#xff09;。 3.stdio.h 标准输入输出头文件。 …

最新全国各省市水系矢量数据(2024年更新)

【数据简介】 来源于OSM在2024年7月份更新的全国范围的水系数据&#xff0c;并将其处理成各省、各市区域。OpenStreetMap&#xff08;OSM&#xff09;是一个全球性的开放源地图项目&#xff0c;旨在通过用户合作创建一个免费的、可编辑的世界地图。其数据广泛被用于地理信息系…

K个一组翻转链表(LeetCode)

题目 给你链表的头节点 &#xff0c;每 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值&…

Java单元覆盖率工具JaCoCo使用指南

JaCoCo&#xff08;Java Code Coverage Library&#xff09;是一款开源的Java代码覆盖率工具&#xff0c;它提供了详细的代码覆盖信息&#xff0c;帮助开发人员了解测试用例对代码的覆盖情况&#xff0c;从而发现潜在的问题和改进空间。以下是关于JaCoCo的详细介绍&#xff1a;…

[算法]二叉搜索树(BST)

二叉搜索树&#xff08;Binary Search Tree&#xff09;&#xff0c;也称二叉排序树或二叉查找树。 一、二叉搜索树的性质 二叉搜索树是一棵二叉树&#xff0c;可以为空。 当二叉搜索树不为空时&#xff1a; 1、非空左子树的所有键值小于其根结点的键值。 2、非空右子树的所有…

linux开发板配置-双网卡桥接-问题记录

韦东山i.mx6ull开发板 使用usb网卡连接电脑&#xff0c;ubuntu进行双网卡配置 问题&#xff1a; mount: mounting 192.168.96.131:/home/book/nfs_rootfs on /mnt failed: No route to host 乱七八糟各种配置&#xff0c;能ping通&#xff0c;但是nfs挂载不上 解决&#xff1a…