IO进程 寒假作业

一、请使用消息队列实现2个终端之间互相聊天

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <pthread.h>void task_w()
{if(access("fifo1", F_OK)==-1){mkfifo("./fifo1", 0666);}int fd=open("./fifo1",O_WRONLY | O_TRUNC);while(1){char buf[128]={0};printf("请输入:");scanf("%s", buf);while(getchar()!=10);write(fd, buf, strlen(buf));}close(fd);
}void task_r()
{if(access("fifo2", F_OK)==-1){mkfifo("./fifo2", 0666);}int fd=open("./fifo2", O_RDONLY);while(1){char buf[128]={0};int res=read(fd, buf, 128);if(res==0){break;}printf("\b\b\b\b\b\b\b读取到的消息为:%s\n", buf);printf("请输入:");fflush(stdout);}close(fd);
}void handler(int signum)
{if(signum==SIGPIPE){printf("管道破裂\n");exit(0);}
}void* thread_main(void* arg)
{task_r();
}int main()
{signal(SIGPIPE, handler);pthread_t id;pthread_create(&id, 0, thread_main, 0);pthread_detach(id);task_w();return 0;
}

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <pthread.h>void task_w()
{if(access("fifo2", F_OK)==-1){mkfifo("./fifo2", 0666);}int fd=open("./fifo2",O_WRONLY | O_TRUNC);while(1){char buf[128]={0};printf("请输入:");scanf("%s", buf);while(getchar()!=10);write(fd, buf, strlen(buf));}close(fd);
}void task_r()
{if(access("fifo1", F_OK)==-1){mkfifo("./fifo1", 0666);}int fd=open("./fifo1", O_RDONLY);while(1){char buf[128]={0};int res=read(fd, buf, 128);if(res==0){break;}printf("\b\b\b\b\b\b\b读取到的消息为:%s\n", buf);printf("请输入:");fflush(stdout);}close(fd);
}void handler(int signum)
{if(signum==SIGPIPE){printf("管道破裂\n");exit(0);}
}void* thread_main(void* arg)
{task_r();
}int main()
{signal(SIGPIPE, handler);pthread_t id;pthread_create(&id, 0, thread_main, 0);pthread_detach(id);task_w();return 0;
}

二、请使用共享内存+信号灯集,实现2个进程之间互相聊天

三、请实现一个终端的功能,注意需要带有cd功能

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <string.h>char *mygets(char *s, int size)
{char *res = fgets(s, size, stdin);int len = strlen(s);if (s[len-1] == '\n'){s[len-1] = '\0';}return s;
}int main(int argc, const char *argv[])
{while(1){pid_t pid = fork();if(pid > 0){wait(0);}else if(pid == 0){char *username = getlogin(); //获取用户名char hostname[64] = {0};gethostname(hostname, 63); //获取主机名char cwd[64] = "";getcwd(cwd, 63); //获取当前工作路径//\033[ 显示方式 ; 前景色 ; 背景色mprintf("\033[1;32;10m%s@%s\033[0m:\033[1;34;10m%s\033[0m$ ", username, hostname, cwd);fflush(stdout);char shell[256] = {0};char *cmd[100] = {0};mygets(shell, 256);char *res = NULL;int i = 0;while(1){if(res == NULL){res = strtok(shell, " ");}else{res = strtok(NULL, " ");}if(res == NULL){break;}cmd[i] = res;i++;}char pathname[32] = "/bin/";strcat(pathname, cmd[0]);execvp(cmd[0], cmd);printf("%s:未找到命令\n", cmd[0]);}}return 0;
}

四、请使用dup2+fgets+printf实现文件拷贝功能

五、请使用read和write实现链表保存到文件,以及从文件加载数据到链表中的功能

六、请使用互斥锁和信号量分别实现5个线程之间的同步

七、请使用条件变量实现2生产者2消费者模型,注意1个生产者在生产的时候,另外一个生产者不能生产

八、请写一个双向链表的快速排序函数

九、请用递归实现计算:1+1/3-1/5+1/7-1/9+...1/n 的值,n通过键盘输入

十、请写出以下几个数据的类型
       

// 整数a:类型:int// a的地址:类型:int *// 存放a的数组b:类型:int[]// 存放a的地址的数组c:类型:int* []// b的地址:类型:int (*)[]// c的地址:类型:int**// 指向printf函数的指针d:类型:int (*)(const char*, ...)// 存放d的数组:类型:int (**)[]

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

保健食品注册数据库<一键查询保健食品信息>

在保健品市场竞争激烈的情况下&#xff0c;企业要如何保障产品合规、信息公开&#xff0c;并且能够迅速应对市场变化呢&#xff1f;查询保健食品注册信息是关键环节。 当下&#xff0c;查询保健食品注册信息主要有两种途径&#xff1a;一是利用国家保健食品注册数据库进行查询…

无所不搜,吾爱制造

吾爱论坛作为众多软件资源爱好者的宝藏之地&#xff0c;汇聚了许多优秀的软件作品&#xff0c;堪称软件界的“福地”。许多技术大佬在这里分享自己的创作。 而今天要介绍的&#xff0c;正是吾爱作者“buyaobushuo”自制的多功能娱乐软件——太极。这款软件基于flet开发&#x…

【C++】详细讲解继承(下)

本篇来继续说说继承。上篇可移步至【C】详细讲解继承&#xff08;上&#xff09; 1.继承与友元 友元关系不能继承 &#xff0c;也就是说基类友元不能访问派⽣类私有和保护成员。 class Student;//前置声明class Same //基类 { public:friend void Fun(const Same& p, con…

【二叉树】4. 判断一颗二叉树是否是平衡二叉树。5. 对称二叉树。6. 二叉树的构建及遍历 7. 二叉树的分层遍历 。

判断一颗二叉树是否是平衡二叉树。OJ链接 可以在求树高度的过程中判断树是否平衡 对称二叉树。OJ链接 二叉树的构建及遍历。OJ链接 注意&#xff1a;public static int i最好把static去掉 否则当有多个测试用例时 i无法重新为0二叉树的分层遍历 。OJ链接 但此题要求返回List…

代码随想录刷题day14(2)|(链表篇)02.07. 链表相交(疑点)

目录 一、链表理论基础 二、链表相交求解思路 三、相关算法题目 四、疑点 一、链表理论基础 代码随想录 二、链表相交求解思路 链表相交时&#xff0c;是结点的位置&#xff0c;也就是指针相同&#xff0c;不是结点的数值相同&#xff1b; 思路&#xff1a;定义两个指针…

IDE提示:因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170

问题情况 不知道为什么我的IDE终端运行命令的时候总提示以下内容&#xff1a; Import-Module : 无法加载文件 D:\Anaconda3\shell\condabin\Conda.psm1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID1351…

Android中Service在新进程中的启动流程3

目录 1、AMS调用客户端onCreate前的准备工作 2、AMS调用客户端onCreate方法 3、AMS调用客户端的onBind方法 4、AMS调用客户端onStart前的准备 5、AMS调用客户端onStart方法 还是先放上Service启动流程概览图&#xff0c;如下&#xff1a; 上一篇文章&#xff0c; 我们分析…

MVCC底层原理实现

MVCC的实现原理 了解实现原理之前&#xff0c;先理解下面几个组件的内容 1、 当前读和快照读 先普及一下什么是当前读和快照读。 当前读&#xff1a;读取数据的最新版本&#xff0c;并对数据进行加锁。 例如&#xff1a;insert、update、delete、select for update、 sele…

基于Springboot + vue实现的在线装修管理系统

“前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff1a;人工智能学习网站” &#x1f496;学习知识需费心&#xff0c; &#x1f4d5;整理归纳更费神。 &#x1f389;源码免费人人喜…

【多视图学习】显式视图-标签问题:多视图聚类的多方面互补性研究

Explicit View-labels Matter:A Multifacet Complementarity Study of Multi-view Clustering TPAMI 2024 论文链接 代码链接 0.论文摘要 摘要-一致性和互补性是促进多视图聚类&#xff08;MVC&#xff09;的两个关键因素。最近&#xff0c;随着流行的对比学习的引入&#…

Docker Hub 全面解析及应对策略

在现代 DevOps 和容器化应用开发中&#xff0c;Docker Hub 是一个不可或缺的工具。然而&#xff0c;一些地区或企业对 Docker Hub 的访问受到限制&#xff0c;甚至全面禁止。这种现象引发了开发者和运维人员的广泛关注。那么&#xff0c;为什么 Docker Hub 会被禁用&#xff1f…

掌握Spring事务隔离级别,提升并发处理能力

Spring框架支持的事务隔离级别与标准的JDBC隔离级别保持一致&#xff0c;共包括五大隔离级别&#xff0c;它们分别是&#xff1a;DEFAULT&#xff08;默认隔离级别&#xff09;、READ_UNCOMMITTED&#xff08;读未提交&#xff09;、READ_COMMITTED&#xff08;读已提交&#x…

Rabbitmq高级特性之消费方确认

背景&#xff1a; 发送方发送消息之后&#xff0c;到达消费端之后&#xff0c;可能会有以下情况&#xff1a;消息处理成功&#xff0c;消息处理异常。RabbitMQ在向消费者发送消息之后&#xff0c;就会把这条消息给删除掉&#xff0c;那么第二种情况&#xff0c;就会造成消息丢…

[C]基础8.详解操作符

博客主页&#xff1a;算法歌者本篇专栏&#xff1a;[C]您的支持&#xff0c;是我的创作动力。 文章目录 0、总结1、操作符的分类2、二进制和进制转换2.1、2进制转10进制2.2、10进制转2进制2.3、2进制转8进制和16进制 3、原码、反码、补码4、移位操作符4.1 左移操作符4.2 右移操…

【豆包MarsCode蛇年编程大作战】花样贪吃蛇

目录 引言 展示效果 prompt提示信息 第一次提示&#xff08;实现基本功能&#xff09; 初次实现效果 第二次提示&#xff08;美化UI&#xff09; 第一次美化后的效果 第二次美化后的效果 代码展示 实现在线体验链接 码上掘金使用教程 体验地址&#xff1a; 花样贪吃蛇…

【Maui】注销用户,采用“手势”点击label弹窗选择

文章目录 前言一、问题描述二、解决方案三、软件开发&#xff08;源码&#xff09;3.1 方法一&#xff1a;前端绑定3.2 方法二&#xff1a;后端绑定3.3 注销用户的方法 四、项目展示 前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架&#xff0c;用于使用 C# 和 XAML 创…

RoCE网络及其协议栈详解(没有中间商赚差价的网络)

引言 随着数据中心对高性能、低延迟通信需求的不断增长&#xff0c;传统的TCP/IP以太网连接已经难以满足现代应用的要求。为了解决这些问题&#xff0c;RDMA&#xff08;Remote Direct Memory Access&#xff09;技术应运而生。RDMA是一种允许网络中的不同计算机直接访问对方内…

数据结构:二叉树—面试题(一)

目录 1、相同的树 2、另一棵树的子树 3、翻转二叉树 4、平衡二叉树 5、对称二叉树 6、二叉树遍历 7、二叉树的分层遍历 1、相同的树 习题链接https://leetcode.cn/problems/same-tree/description/https://leetcode.cn/problems/same-tree/description/ 描述&#xff1a…

2025年新开局!谁在引领汽车AI风潮?

汽车AI革命已来。 在2025年伊始开幕的CES展上&#xff0c;AI汽车、AI座舱无疑成为了今年汽车行业的最大热点。其中不少车企在2025年CES上展示了其新一代AI座舱&#xff0c;为下一代智能汽车的人机交互、场景创新率先打样。 其中&#xff0c;东软集团也携带AI驱动、大数据支撑…

HarmonyOS Next 应用UI生成工具介绍

背景 HarmonyOS Next适配开发过程中难买难要参考之前逻辑&#xff0c;但是可能时间较长文档不全&#xff0c;只能参考Android或iOS代码&#xff0c;有些逻辑较重的场景还可以通过AI工具将Android 的Java代码逻辑转成TS完成部分复用。对于一些UI场景只能手动去写&#xff0c;虽…