java 输出 lambda 生成的类

文章目录


  • 启动添加参数 -Djdk.internal.lambda.dumpProxyClasses 就会在运行源码目录输出 class 文件
/*** <p>Copyright &copy; qww 版权所有。</p>*/
package manageSystemOfStudentInfo;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;/*** <b>Application name:</b>qww 维护<br>* <b>Application describing:</b> <br>* <b>Copyright:</b>Copyright &copy; qww 版权所有。<br>* <b>Company:</b>qww<br>* <b>Date:</b>2016年7月25日,下午5:34:07<br>* * @author qww* @version $Revision$*/
public class ManageXMLFile {/**************** 下面是一些方法 ****************//*** * {获取XML文件中ID的最大值}* * @param url* @return* @author: qww*/public static int getMaxId(String url) {int max = 0;Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element e : list) {int id = Integer.parseInt(e.attributeValue("id"));if (id > max) {max = id;}} // end foreach()return max;}// end getMaxId() method/*** * {查询输入的用户名密码在数据库中书否存在,并验证是否对应}* * @param url* @return* @author: qww*/public static boolean queryAccount(String url, String username,String password) {boolean b = false;Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element element : list) {if (String.valueOf(username).equals(element.attributeValue("username"))&& String.valueOf(password).equals(element.attributeValue("password"))) {b = true;}// end if}// end foreach loop listreturn b;}// end queryAccount(String url) method/*** * {获取Document对象}* * @param url* @return* @author: qww*/public static Document getDocument(String url) {SAXReader reader = new SAXReader();Document dom = null;try {dom = reader.read(new File(url));} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}return dom;}// end getDocument()方法/*** * {写入XML文件,目的地是 url}* * @param url* @param dom* @throws IOException* @author: qww*/public static void writerXML(String url, Document dom) throws IOException {OutputFormat format = OutputFormat.createCompactFormat();format.setIndent("	");format.setNewlines(true);format.setEncoding("gbk");XMLWriter xml = new XMLWriter(new FileOutputStream(url), format);xml.write(dom);}// end writerXML() method/*** * {创建一个只含有根节点<person>的XML文件,目的地url}* * @param url* @param rootElement* @author: qww*/public static void creatNullXmlFile(String url, String rootElement) {Document dom = DocumentHelper.createDocument();Element person = dom.addElement(rootElement);dom.setRootElement(person);try {writerXML(url, dom);} catch (IOException e) {e.printStackTrace();System.out.println("“创建空XML文件方法”中的异常");}}// end creatNullXmlFile(String url) method/*** * {重载的方法,向源路径为url的XML文件中添加 用户注册 的数据}* * @param url* @param st* @author: qww*/public static void add(String url, String account[]) {Document dom = getDocument(url);Element person = dom.getRootElement();Element act = person.addElement("account");act.addAttribute("username", account[0]);act.addAttribute("password", account[1]);// 写入文件try {writerXML(url, dom);} catch (IOException e) {e.printStackTrace();}}// end add(String url, Student stu) method/*** * {向源路径为url的XML文件中添加 Student 类的数据}* * @param url* @param st* @author: qww*/public static void add(String url, Student st) {Document dom = getDocument(url);Element person = dom.getRootElement();Element stu = person.addElement("student");stu.addAttribute("id", String.valueOf(getMaxId(url) + 1));/*********** 添加子节点 *********************/Element name = stu.addElement("name");name.setText(st.getName());Element sex = stu.addElement("sex");sex.setText(st.getSex());Element address = stu.addElement("address");address.setText(st.getAddress());Element age = stu.addElement("age");age.setText(String.valueOf(st.getAge()));Element grade = stu.addElement("grade");grade.setText(st.getGrade());Element email = stu.addElement("email");email.setText(st.getEmail());Element phone = stu.addElement("phone");phone.setText(st.getPhone());Element school = stu.addElement("school");school.setText(st.getSchool());/*********** 添加子节点 结束 *********************/// 写入文件try {writerXML(url, dom);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// end add(String url, Student stu) method/*** * {向源路径为url的XML文件中添加 Student 类的数据;重载的add方法,用于自己添加ID}* * @param url* @param st* @author: qww*/public static void add(String url, Student st, int id) {Document dom = getDocument(url);Element person = dom.getRootElement();/*********** 添加子节点 *********************/Element stu = person.addElement("student");stu.addAttribute("id", String.valueOf(id));Element name = stu.addElement("name");name.setText(st.getName());Element address = stu.addElement("address");address.setText(st.getAddress());Element grade = stu.addElement("grade");grade.setText(st.getGrade());Element sex = stu.addElement("sex");sex.setText(st.getSex());Element school = stu.addElement("school");school.setText(st.getSchool());Element email = stu.addElement("email");email.setText(st.getEmail());Element phone = stu.addElement("phone");phone.setText(st.getPhone());Element age = stu.addElement("age");age.setText(String.valueOf(st.getAge()));/*********** 添加子节点 结束 *********************/// 写入文件try {writerXML(url, dom);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// end add(String url, Student stu) method/*** * {从源路径为url的XML文件中,根据学生ID删除相应学生信息}* * @param url* @param id* @author: qww*/public static int del(String url, int id) {int flag = 0;// 这是一个删除成功与否的标志Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element element : list) {if (String.valueOf(id).equals(element.attributeValue("id"))) {person.remove(element);flag++;}}// end foreach()try {if (1 == flag) {System.out.println("确认删除ID=" + id + "的学生信息(y或Y确认,其他取消删除操作)");Scanner sc = new Scanner(System.in);if (sc.next().equalsIgnoreCase("Y")) {writerXML(url, dom);flag++;}// end}// end if(1==flag)} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}// end catch (IOException e)if (2 == flag) {System.out.println("删除ID=" + id + "的学生信息成功……");} else if (1 == flag) {System.out.println("取消删除操作……");} else {System.out.println("没有ID=" + id + "的学生,  无法完成删除操作……");}// end else{}return flag;}// end del(String url,int id) method/*** * {从控制台<修改>学生信息}* * @param s* @return* @author: qww*/public static Students inputStud(Students s) {Students stu = s;Scanner sc = new Scanner(System.in);// while (true) {// System.out.println("ID=" + s.getId() + "学生的 Name 属性修改前的值为:"// + s.getName() + "\n请输入新值:");// 1// String str3 = sc.next();// if (ManageStudentInfo.regex("[\\u4e00-\\u9fa5]+", str3)) {// stu.setName(str3);// break;// } else {// System.out.println("您输入有误,只能输入中文!");// }// } // end while(true) loop name// while (true) {// System.out.println("ID=" + s.getId() + "学生的 Sex 属性修改前的值为:"// + s.getSex() + "\n请输入新值, 只能输入'男'或'女':");// 2// String str3 = sc.next();// if (str3.equals("男") || str3.equals("女")) {// stu.setSex(str3);// break;// } else {// System.out.println("输入有误,只能输入'男'或'女'!");// }// } // end while(true) loop sexSystem.out.println("ID=" + s.getId() + "学生的 Address 属性修改前的值为:"+ s.getAddress() + "\n请输入新值:");// 3stu.setAddress(sc.next());while (true) {System.out.println("ID=" + s.getId() + "学生的 Age 属性修改前的值为:"+ s.getAge() + "\n请输入新值:");// 4String str3 = sc.next();if (ManageStudentInfo.regex("^([8-9]|((1|2|3|4)[0-9])|50)*", str3)) {stu.setAge(Integer.parseInt(str3));break;} else {System.out.println("年龄太大或太小,请输入8-50");}} // end while(true) loop agewhile (true) {System.out.println("ID=" + s.getId() + "学生的 Grade 属性修改前的值为:"+ s.getGrade() + "\n请输入新值(只能输入'初级'、'中级'、'高级'):");// 5String str3 = sc.next();if (str3.equals("初级") || str3.equals("中级") || str3.equals("高级")) {stu.setGrade(str3);break;} else {System.out.println("输入错误,请重新输入。只能输入'初级'、'中级'、'高级':");}} // end while(true) loop gradeSystem.out.println("ID=" + s.getId() + "学生的 Email 属性修改前的值为:"+ s.getEmail() + "\n请输入新值: ");// 6stu.setEmail(sc.next());while (true) {System.out.println("ID=" + s.getId() + "学生的 Phone 属性修改前的值为:"+ s.getPhone() + "\n请输入新值: ");// 7String str3 = sc.next();if (ManageStudentInfo.regex("^[1][358]\\d{9}$", str3)) {stu.setPhone(str3);break;} else {System.out.println("请输入 有效的11位电话号码");}} // end while(true) loop phoneSystem.out.println("ID=" + s.getId() + "学生的 School 属性修改前的值为:"+ s.getSchool() + "\n请输入新值: ");;// 8stu.setSchool(sc.next());return stu;}// end inputStud(Students s) method/*** * {根据学生ID修改学生信息}* * @param url* @param st* @author: qww*/public static void edit(String url, Students st) {int flag = 0;try {Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element element : list) {if (String.valueOf(st.getId()).equals(element.attributeValue("id"))) {flag++;/*****************************/st = inputStud(st);/*****************************//** element.element("name").setText(st.getName());* element.element("sex").setText(st.getSex());*/element.element("address").setText(st.getAddress());element.element("grade").setText(st.getGrade());element.element("school").setText(st.getSchool());element.element("email").setText(st.getEmail());element.element("phone").setText(st.getPhone());element.element("age").setText(String.valueOf(st.getAge()));writerXML(url, dom);flag++;}// end if()}// end foreach() loop} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}// end catch (IOException e)if (2 == flag)System.out.println("修改ID=" + st.getId() + "的学生信息成功……");else if (flag == 0)System.out.println("ID=" + st.getId() + "不存在");}// end edit(String url, Student st) method/*** * {重载的edit方法,根据ID修改部分学生部分信息}* * @param url* @param st* @param attribute* @author: qww*/public static void edit(String url, Student st, String attribute) {int flag = 0;try {Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element element : list) {if (String.valueOf(st.getId()).equals(element.attributeValue("id"))) {flag++;if (attribute.equals("age")) {// age是int型的——独立出来Scanner sc = new Scanner(System.in);while (true) {System.out.println("ID=" + st.getId() + "学生的"+ attribute + "属性,修改前的值为:"+ element.elementText(attribute)+ "\n请输入新值:");// 4String str3 = sc.next();if (ManageStudentInfo.regex("^([8-9]|((1|2|3|4)[0-9])|50)*", str3)) {element.element("age").setText(str3);break;} else {System.out.println("年龄太大或太小,请输入8-50");}} // end while(true) loop age} else {// _——————Scanner sc = new Scanner(System.in);if (attribute.equals("phone")) {while (true) {System.out.println("ID=" + st.getId()+ "学生的 Phone 属性修改前的值为:"+ element.elementText(attribute)+ "\n请输入新值: ");// 7String str3 = sc.next();if (ManageStudentInfo.regex("^[1][358]\\d{9}$",str3)) {element.element("phone").setText(str3);break;} else {System.out.println("请输入 有效的11位电话号码");}} // end while(true) loop phone} else if (attribute.equals("grade")) {while (true) {System.out.println("ID=" + st.getId()+ "学生的 Grade 属性修改前的值为:"+ element.elementText(attribute)+ "\n请输入新值(只能输入'初级'、'中级'、'高级'):");// 5String str3 = sc.next();if (str3.equals("初级") || str3.equals("中级")|| str3.equals("高级")) {element.element("grade").setText(str3);break;} else {System.out.println("输入错误,请重新输入。只能输入'初级'、'中级'、'高级':");}} // end while(true) loop grade} else {System.out.println("id为" + st.getId() + "学生的"+ attribute + "属性修改前的值为:"+ element.elementText(attribute)+ "\n请输入新值:");element.element(attribute).setText(sc.next());}}// end else{//_——————writerXML(url, dom);flag++;}// end if()}// end foreach() loop} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}// end catch (IOException e)if (2 == flag)System.out.println("修改ID=" + st.getId() + "的学生信息成功……");else if (flag == 0)System.out.println("ID=" + st.getId() + "不存在");}// end edit(String url, Student st,String attribute) method/*** * {根据学生ID查询学生 所有信息}* * @param url* @param id* @return* @author: qww*/public static Students queryById(String url, int id) {Document dom;Students stuD = new Students();dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();int flag = 0;for (Element element : list) {if (String.valueOf(id).equals(element.attributeValue("id"))) {flag = 1;stuD.setId(Integer.parseInt(element.attributeValue("id")));stuD.setAge(Integer.parseInt(element.elementText("age")));// 下面是String型的元素stuD.setName(element.elementText("name"));stuD.setSex(element.elementText("sex"));stuD.setAddress(element.elementText("address"));stuD.setGrade(element.elementText("grade"));stuD.setEmail(element.elementText("email"));stuD.setPhone(element.elementText("phone"));stuD.setSchool(element.elementText("school"));// System.out.println("查询到ID=" + id + "的学生信息并返回……");}}// end foreach(Element ) loopif (flag == 0) {System.out.println("没有ID=" + id + "的学生,  请重新输入……");return null;}// end if (flag == 0)return stuD;}// end queryStudentInfoById() method/*** * {查询所有学生信息}* * @param url* @return* @author: qww*/public static List<Students> queryAll(String url) {List<Students> list = null;Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> listErgodic = person.elements();List<Students> listSave = new ArrayList<Students>();for (Element element : listErgodic) {Students stuD = new Students();stuD.setId(Integer.parseInt(element.attributeValue("id")));stuD.setAge(Integer.parseInt(element.elementText("age")));// 下面是String型的元素stuD.setName(element.elementText("name"));stuD.setSex(element.elementText("sex"));stuD.setAddress(element.elementText("address"));stuD.setGrade(element.elementText("grade"));stuD.setEmail(element.elementText("email"));stuD.setPhone(element.elementText("phone"));stuD.setSchool(element.elementText("school"));listSave.add(stuD);}// end foreach() looplist = listSave;return list;}// end queryAllStudentInfo(String url)/*** * {查询ID并返回防止ID重复,返回1则表示ID存在}* * @param url* @param id* @author: qww*/public static int queryId(String url, int id) {int flag = 0;Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();for (Element element : list) {if (String.valueOf(id).equals(element.attributeValue("id"))) {flag = 1;}}// end foreach()return flag;}// end queryId(String url, int id) method/*** * {重载的方法,用于添加学生信息提示}* * @param url* @author: qww*/public static void queryId(String url) {// public static List<int[]> queryId(String url) {int flag = -1;int arrId[] = new int[1];List<int[]> lit = new ArrayList<int[]>();Document dom = getDocument(url);Element person = dom.getRootElement();List<Element> list = person.elements();System.out.print("不能添加的ID=");int i = 1, j = 1;for (Element element : list) {if (1 == i) {for (Element e : list) {i++;}// end inner foreach() loop}j++;// 标志XML没有到结尾if (j != i) {System.out.print(element.attributeValue("id") + ", ");} else {System.out.println(element.attributeValue("id"));}}// end foreach()System.out.print("建议添加的ID=");outerFor: for (int n = 1; n < getMaxId(url); n++) {int k = 0;for (Element e : list) {k = Integer.parseInt(e.attributeValue("id"));if (k == n) {flag = 1;continue outerFor;}}// end inner foreach() loopSystem.out.print(n + ", ");}// end for(int n=0;n<getMaxId(url);n++){ loopif (-1 == flag) {System.out.println("建议输入ID= " + (getMaxId(url) + 1));} else {System.out.println((getMaxId(url) + 1) + "及更大值");}// // System.out.println();// // return lit;}// end queryId(String url, int id) method}// end class ManageXMLFile

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

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

相关文章

新版Edge卸载

新版Edge卸载&#xff1a;步骤与注意事项 随着Windows 10的发布&#xff0c;微软推出了新版Edge浏览器。虽然新版Edge浏览器具有许多优秀的新功能和改进&#xff0c;但有时您可能希望卸载它并使用其他浏览器。在本文中&#xff0c;我们将向您介绍如何卸载新版Edge浏览器&#…

wpsjs学习——获取单元格批注

1.获取第一个单元格的值&#xff1a; wps.Application.ActiveSheet.Range(A1).Value2; 2.1.获取第一个单元格的批注&#xff1a; wps.Application.ActiveSheet.Range(A1).Comment.Text(); <div class"global">获取表格信息<div class"divItem">…

厚积薄发11年,鸿蒙究竟有多可怕

​12月20日中国工程院等权威单位发布《2023年全球十大工程成就》。本次发布的2023全球十大工程成就包括“鸿蒙操作系统”在内。入围的“全球十大工程成就”&#xff0c;主要指过去五年由世界各国工程科技工作者合作或单独完成且实践验证有效的&#xff0c;并且已经产生全球影响…

C++中几个技巧(有点诡异的那种)

RAII 这个太多例子了&#xff0c;不细说 公开Base的内容 #include <iostream> using namespace std;struct Base {Base(){container;} protected:int container 0; };struct Derived:public Base {Derived(Base b):Base(b){}using Base::container; };int main() {Ba…

linux x86 setup_arch代码注释

个人理解加查的资料&#xff0c;不保证正确&#xff0c;有不对可以评论 // 查找个人电脑相关固件占用的地址&#xff08;来自bootparam中的handler&#xff09; olpc_ofw_detect(); // 将 early_idts 设置到 idt_table 并应用 lidt&#xff0c;包含 asm_exc_debug asm_exc_in…

Zernike多项式法生成相位理论推导及图像引导实现原理

目录 引言 波前传感器 ​编辑 关于相位计算问题补充 关于结构图的修正 光束质量评价指标 Zernike多项式 ​编辑Zernike多项式法生成相位 光强分布求波前相位-GS 更快的迭代方法SPGD 基于Zernike模式的SPGD 引言 我们还是先从第一篇文献开始理解展开今天分享的一些重…

并查集(C++)

目录 一、并查集的原理二、并查集的实现路径压缩 三、并查集的应用结尾 一、并查集的原理 并查集的两个功能&#xff1a; 合并&#xff1a;合并两个不想联系的元素查询&#xff1a;判断两个元素是否在同一个组内 主要解决的是元素分组的问题。 例如&#xff1a;某班级要创建…

数据迁移怎么测,都有哪些步骤?

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;软件测试面试题分享&#xff1a; 1000道软件测试面试题及答案&#x1f4e2;软件测试实战项目分享&#xff1a; 纯接口项目-完…

gRPC - 分布式 gRPC 四种通信方式、三种代理方式(全代码演示)

目录 一、分布式 gRPC 开发 1.1、项目结构 & 前置说明 1.1.1、项目结构 1.1.2、protoc 必备依赖 1.1.3、推荐插件&#xff08;简化开发&#xff09; 1.1.4、protoc 生成 Java 代码说明 1.2、一元 RPC&#xff08;代理方式一&#xff1a;阻塞式 BlockingStub&#xff…

网络安全专家必备的20个操作系统

工欲善其事必先利其器&#xff0c;网络安全专家、道德黑客、蓝队和红队的“武器库”里通常都收藏着一堆自己偏爱的操作系统。 如果你是网络安全新手&#xff0c;面对五花八门的安全工具手足无措&#xff0c;那么选择合适的网络安全专用操作系统无疑是更为高效的做法&#xff0…

DFA算法在敏感词过滤的应用

相信大家对于游戏里聊天框的以下内容已经不陌生了 "我***"“你真牛*”“你是不是傻*” 一个垃圾的游戏环境是非常影响玩游戏的心情的&#xff0c;看到这些&#xff0c;就知道游戏已经帮我们屏蔽掉了那些屏蔽字了&#xff0c;对于玩游戏而言&#xff0c;心里会好受很…

D48|动态规划之编辑距离

583.两个字符串的删除操作 初始思路: 大概能想到定义dp数组为最少的删除次数 想不明白递归公式应该怎么推导 题解复盘&#xff1a; 第一种思路&#xff1a;dp[i][j]所需要删除元素的最少次数. 递归公式五部曲; 1)dp数组的定义&#xff1a; dp[i][j]&#xff1a;以i-1为结尾的…

力扣1944.队列中可以看到的人数--单调栈

思路&#xff1a; 由题知一个人能 看到 他右边另一个人的条件是这两人之间的所有人都比他们两人 矮 &#xff0c;也就是说&#xff0c;在自己右边第一个比自己高的人后面的人就肯定看不到了那么只需要找到右边第一个比自己高的人与自己之间的所有满足要求的人就行了&#xff0…

JDBC数据库访问——数据库操作

与指定的数据库建立连接后&#xff0c;就可以使用JDBC提供的API对数据库进行操作&#xff0c;包括查询、新增、更新、删除等。 1.查询操作 和数据库建立连接后&#xff0c;对数据库表进行查询操作的步骤如下&#xff1a; ①创建statement对象 由已创建的Connection对象con调…

透明OLED屏:种类与技术特点

作为一名专注于OLED技术研发的工程师&#xff0c;同时在尼伽工作多年&#xff0c;有幸能够参与到透明OLED屏的研发过程中。透明OLED屏作为一种新型显示技术&#xff0c;以其独特的透明特性和优秀的画质表现&#xff0c;正逐渐在各个领域崭露头角。在这篇文章中&#xff0c;我将…

【考研】二战稳上了,能先去工作几个月再读研吗

这篇文章是抖音和b站上上传的同名视频的原文稿件&#xff0c;感兴趣的csdn用户可以关注我的抖音和b站账号&#xff08;GeekPower极客力量&#xff09;。同时这篇文章也为视频观众提供方便&#xff0c;可以更加冷静地分析和思考。文章同时在知乎发表。 又一年的考研初试结束了&…

GROUP_CONCAT报错解决

有如下表 其中awardee和awardee_unit都是保存的json类型的字符串, awardee是多个人员id, awardee_unit是部门的全路径 查询时要注意转换 需要将name拼接起来合并成一行,直接 GROUP_CONCAT 会报错 百度的大部分答案是修改数据库配置去掉严格模式,如果不方便修改数据库可以这样…

CSMM软件能力成熟度模型的申报条件

CSMM&#xff08;软件能力成熟度模型&#xff09;是中国软件行业的一个重要标准&#xff0c;用于评估和认证企业在软件开发和维护方面的能力。CSMM认证分为五个等级&#xff0c;从低到高分别是初始级、受管理级、稳健级、量化管理级和优化级。以下是各个等级的申报条件概述&…

使用Go语言的HTTP客户端库进行API调用

随着微服务架构和RESTful API的普及&#xff0c;API调用成为了日常开发中的常见任务。Go语言提供了多种工具和库来帮助开发者轻松地与API进行交互。本文将介绍如何使用Go语言的HTTP客户端库进行API调用。 在Go语言中&#xff0c;标准库中的net/http包提供了基本的HTTP客户端功…

linux 终端获取键值

tty pts终端下获取键值 ctrl c 或3秒自动退出。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <signal.h> #include <termios.h> #include <sys/ioctl.h> #include <linux/kd.h>…