【操作系统学习 02】xv6操作系统实现反向输出命令echo_reversal
2018-03-24 10:51
323 查看
echo_reversal.c实现
观察xv6操作系统中的echo代码可以知道,echo调用printf.c文件下的printf函数进行了输出#include "types.h"
#include "stat.h"
#include "user.h"
int
main(int argc, char *argv[])
{
int i;
for(i = 1; i < argc; i++)
printf(1, "%s%s", argv[i], i+1 < argc ? " " : "\n");
exit();
}那么我们要实现echo_reversal,就同样可以调用printf函数,只不过需要使用%c来对argv字符串数组中的每一项中的字符进行反向输出。我们使用strlen(char*)来获得argv数组的长度,从而从后往前遍历输出命令行中的字符串。此外,argv[0]所对应的字符串是我们所要输入的命令echo_reversal,因此我们并不需要输出argv[0]。(当然我们有别的实现方法,这里不一一列举)#include "types.h"
#include "stat.h"
#include "user.h"
int
main(int argc, char *argv[])
{
int i;
for(i = 1; i < argc; i++)
{
int j;
for(j = strlen(argv[i])-1; j >= 0;j--)
printf(1,"%c",argv[i][j]);
printf(1,"%s", i+1 < argc ? " " : "\n");
}
exit();
}
echo_reversal.c的编译与运行
我们需要在Makefile中加入echo_reversal.c的编译和运行命令,使得fs.img镜像中有编译好的运行程序,使得xv6中可以通过exec来运行程序,使我们所定义的命令生效。
执行make以及make qemu-nox命令,运行xv6,发现已经有我们所创建的程序的文件
执行echo_reversal命令,发现能够对输入的字符串进行反向输出,说明我们已经成功在xv6实现自定义的命令
观察xv6操作系统中的echo代码可以知道,echo调用printf.c文件下的printf函数进行了输出#include "types.h"
#include "stat.h"
#include "user.h"
int
main(int argc, char *argv[])
{
int i;
for(i = 1; i < argc; i++)
printf(1, "%s%s", argv[i], i+1 < argc ? " " : "\n");
exit();
}那么我们要实现echo_reversal,就同样可以调用printf函数,只不过需要使用%c来对argv字符串数组中的每一项中的字符进行反向输出。我们使用strlen(char*)来获得argv数组的长度,从而从后往前遍历输出命令行中的字符串。此外,argv[0]所对应的字符串是我们所要输入的命令echo_reversal,因此我们并不需要输出argv[0]。(当然我们有别的实现方法,这里不一一列举)#include "types.h"
#include "stat.h"
#include "user.h"
int
main(int argc, char *argv[])
{
int i;
for(i = 1; i < argc; i++)
{
int j;
for(j = strlen(argv[i])-1; j >= 0;j--)
printf(1,"%c",argv[i][j]);
printf(1,"%s", i+1 < argc ? " " : "\n");
}
exit();
}
echo_reversal.c的编译与运行
我们需要在Makefile中加入echo_reversal.c的编译和运行命令,使得fs.img镜像中有编译好的运行程序,使得xv6中可以通过exec来运行程序,使我们所定义的命令生效。
执行make以及make qemu-nox命令,运行xv6,发现已经有我们所创建的程序的文件
执行echo_reversal命令,发现能够对输入的字符串进行反向输出,说明我们已经成功在xv6实现自定义的命令
相关文章推荐
- Linux之Shell学习(七)Shell echo命令、shell printf命令:格式化输出语句、Shell注释
- 批处理学习笔记3:使用echo命令输出空格行
- linux命令学习:echo详解,格式化输出,不换行输出
- 汉诺塔、反向输出问题--利用递归实现
- JAVA高级视频_IO输入与输出02、03 RandomAccessFile 学习笔记
- 在shell中使用echo命令输出带颜色的文本
- JAVA高级视频02_IO输入与输出 06 PipedInputStream和PipedOutPutStream 学习笔记
- 单输出感知器学习算法实现修改
- java学习之路——小例子(实现输入年份,输出该年份的具体天数信息)
- Shell命令:echo介绍,echo如何输出带颜色的文本
- 在shell中使用echo命令输出带颜色的文本
- 学习笔记:一个操作系统的实现--马上动手写一个最小的“操作系统”
- 学习笔记:一个操作系统的实现--搭建你的工作环境
- 学习笔记:一个操作系统的实现--保护模式之基础知识
- PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
- FreeBSD源码学习(2):echo命令源码分析
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- C++实现字母的反向输出
- 网络学习(三十)通过ghost的网络克隆功能实现操作系统的分发
- Linux操作系统Ubuntu的apt命令学习