java执行cls命令_java开发系统内核:cls 屏幕清空命令的实现
更详细的讲解和代码调试演示过程,请参看视频
如何进入google,算法面试技能全面提升指南
上节,我们实现了控制台命令mem, 它能显示当前可用内存,本节我们实现另一常用命令叫cls, 该命令的作用是把控制台所以字符全部清空,例如假设当前控制台显示的信息如下:
此时,我们在控制台中输入命令”cls”, 运行后控制台上所有信息将会被清除:
在实现该命令前,我们先实现一个辅助函数,当前,我们判断控制台上输入的字符是否是一个合法命令,使用的是逐个字符匹配,例如判断是否输入了命令, “mem”, 我们原来的做法是:
if (cmdline[0] == 'm' && cmdline[1] == 'e' && cmdline[2] == 'm'
&& cmdline[3] == 0)
这种做法很不灵活,如果命令字符串含有多个字母,那么怎个if语句就得写得很长,这样的代码是很难维护的,所以,我们要实现一个函数strcmp, 它比较两个
字符串内容是否一样,一样的话返回1,不一样返回0,代码如下:
int strcmp(char *src, char *dest) {
if (src == 0 || dest == 0) {
return 0;
}
int i = 0;
while (src[i] != 0 && dest[i] != 0) {
if (src[i] != dest[i]) {
return 0;
}
i++;
}
if (src[i] == 0 && dest[i] != 0) {
return 0;
}
if (src[i] != 0 && dest[i] != 0) {
return 0;
}
return 1;
}
有了比较函数后,以后我们用来判断输入字符串是否是合法命令就方便多了。接下来我们要实现cls 命令,该命令的实现很简单,只要把控制台显示区域的所有像素点全部设置成黑色就可以了,代码如下:
void console_task(struct SHEET *sheet, int memtotal) {
struct TIMER *timer;
struct TASK *task = task_now();
int i, fifobuf[128], cursor_x = 16, cursor_c = COL8_000000;
int cursor_y = 28;
char cmdline[30];
int x = 0, y = 0;
for(...) {
....
else if (i == KEY_RETURN) {
set_cursor(shtctl, sheet, cursor_x, cursor_y, COL8_000000);
cmdline[cursor_x / 8 - 2] = 0;
cursor_y = cons_newline(cursor_y, sheet);
if (strcmp(cmdline, "mem") == 1) {
char *s = intToHexStr(memtotal / (1024));
showString(shtctl,sheet,16,cursor_y,COL8_FFFFFF, "free ");
showString(shtctl,sheet,52,cursor_y, COL8_FFFFFF, s);
showString(shtctl, sheet, 126, cursor_y, COL8_FFFFFF, " KB");
cursor_y = cons_newline(cursor_y, sheet);
} else if (strcmp(cmdline, "cls") == 1) {
for (y = 28; y < 28 + 128; y++)
for (x = 8; x < 8 + 240; x++) {
sheet->buf[x + y * sheet->bxsize] = COL8_000000;
}
sheet_refresh(shtctl, sheet, 8, 28, 8+240, 28+128);
cursor_y = 28;
showString(shtctl, sheet, 8, 28, COL8_FFFFFF, ">");
}
cursor_x = 16;
}
....
}
}
当控制台收到回车键按钮消息后,检测一下输入字符串是否是”cls”, 如果是的话,它变量控制台显示区域的每个像素,把像素颜色全部设置成黑色,同时把光标闪烁的位置设置为第一行,这样整个窗口清除的效果就产生了。
更详细的代码讲解和调试演示,请参看视频。
更多技术信息,包括操作系统,编译器,面试算法,机器学习,人工智能,请关照我的公众号:
java执行cls命令_java开发系统内核:cls 屏幕清空命令的实现相关推荐
- java 执行cmd 堵塞_java中调用cmd命令被阻塞无法返回和继续执行
在项目中用到了数据库的备份和恢复功能,就通过java的Runtime.getRuntime().exec()来调用cmd或者linux命令来导出和导入.sql文件.但是在执行恢复时,程序一直被阻塞,没 ...
- java调用多条cmd命令_Java中调用多条cmd命令
使用Java执行cmd代码很简单: try{ Runtime.getRuntime().exec("cd /d E:"); }catch (Exception e) { e.pri ...
- java技术学习内容_Java开发主要都学些什么内容?
展开全部 Java开发培训班主要学32313133353236313431303231363533e58685e5aeb931333363386164习的课程大纲,你可以看下. 第一阶段:JavaSE ...
- linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]
Shell脚本相关命令 介绍 一句话说明shell脚本是个啥 shell脚本就是将多个shell指令汇集到一起去完成一个复杂的功能 类似windows下的批处理文件 一般以sh为文件后缀 语法 程序结 ...
- c java 系统开发_java开发系统内核:使用C语言开发系统应用程序
更详细的讲解和代码调试演示过程,请参看视频 用java开发C语言编译器 如果你对机器学习感兴趣,请参看一下链接: 机器学习:神经网络导论 我们的操作系统通过增添内核接口导出机制后,已经可以作为平台,运 ...
- java可以转linux么_Java开发必会的Linux命令(转)
本文并不会对所有命令进行详细讲解,只给出常见用法和解释.具体用法可以使用--help查看帮助或者直接通过google搜索学习. 1.查找文件 find / -name filename.txt 根据名 ...
- java redis 面试题_Java开发人员怎么面试 常见Redis面试题有哪些
Java开发人员怎么面试?常见Redis面试题有哪些?Redis是目前各大企业都在使用的人们技术,也是企业选拔人才时考核的一个难题.有很多同学只是简单了解Redis的应用,但对于为什么要用Redis以 ...
- java spring配置文件路径_java - 在spring b中从命令行设置活动配置文件和配置位置...
java - 在spring b中从命令行设置活动配置文件和配置位置 我有一个春季启动应用程序. 我的应用程序中有三个配置文件 - > 开发,分期和生产. 所以我有3个文件 应用developm ...
- java如何调用linux命令_java程序中如何调用linux命令
java程序中如何调用linux命令 作为一个Java开发人员,有些常用的Linux命令必须掌握.即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令.因为很多服 ...
- java全局变量怎么定义_Java开发知识点:如何理解Java函数式编程?
Java是一种计算机编程语言,可用于编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等,是IT开发行业中最受欢迎的编程语言之一.想要学好Java必须要一步一个脚印打好基础.积攒实战经验 ...
最新文章
- 【必须收藏】那些酷炫的深度学习网络图怎么画出来的?
- Object与RTTI
- C++中public,protected,private派生类继承问题和访问权限问题
- 读书笔记_代码大全_第14章_组织直线型代码_第15章_使用条件语句
- VC++中使用内存映射文件处理大文件
- Java 多态,接口
- CCPC-Wannafly Winter Camp Day3 (Div2, onsite) I 石头剪刀布(按秩合并并查集)
- 编程语言-初学者常见的几个问题
- Python高性能计算库—Numba
- 开启本地git权限_git的使用,有这篇文章就够了
- epoll文件服务器,使用epoll模型的服务器
- 2019 deecamp B题不完全的记录
- 飞睿科技微波雷达感应方案,多普勒雷达效应技术应用
- coreldraw2021永久序列号和激活注册教程
- Java:ActionListener接口
- SAP HANA SQL系列四:数字函数
- [机器学习] --- 红楼梦后四十回到底是谁写的?机器学习分析法
- 「镁客·请讲」火柴全景VR徐晨翔:正值VR本命年,我们该做一些不一样的事情...
- MapReduce统计部门员工组别,并排序
- Idea解决项目起不来的三个方法
热门文章
- 笔记本计算机怎么进入安全模式启动,笔记本电脑如何进入安全模式
- 《谁动了我的奶酪》感悟
- 【转载】用Pwnage + Redsnow 制作完美越狱固件
- java openoffic linux_windows/linux服务器上java使用openoffice将word文档转换为PDF(亲测可用)...
- 美和易思——互联网技术学院返校周测题
- python练习-跳跃游戏
- 你认为996是一种荣耀吗?
- 安装CAD2006出现html,win7系统安装cad2006出现已终止CAD2006-Simplifieng安装的解决方法...
- AutoCAD 2006/2007等在高版本系统上无法安装
- RingBuffer