Linux中more命令的实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PAGELEN 24
#define LINELEN 512 void do_more(FILE *);
int see_more(FILE *); int main(int argc, char *argv[])
{
FILE *fp;
if (argc == 1)
do_more(stdin);
else
{
while (--argc)
{
if ((fp = fopen(*++argv, "r")) != NULL)
{
do_more(fp);
fclose(fp);
}
else
exit(1);
}
}
return 0;
} void do_more(FILE *fp)
{
char line[LINELEN];
int num_of_lines = 0;
int reply;
FILE *fp_tty;
fp_tty = fopen("/dev/tty", "r");
if(fp_tty == NULL)
exit(1);
while (fgets(line, LINELEN, fp))
{
if (num_of_lines == PAGELEN)
{
reply = see_more(fp_tty);
if(reply == 0)
break;
num_of_lines -= reply;
}
if (fputs(line, stdout) == EOF)
exit(1);
num_of_lines++;
}
} int see_more(FILE *cmd)
{
int c;
printf("\033[7m more? \033[m");
while ((c = getc(cmd)) != EOF)
{
if (c == 'q')
return 0;
if (c == ' ')
return PAGELEN;
if (c == '\n')
return 1;
}
return 0;
}
还有许多缺陷
Linux中more命令的实现的更多相关文章
- Linux中exec命令相关
Linux中exec命令相关 exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. b ...
- linux中touch命令参数修改文件的时间戳(转)
linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件,以下是linux中touch命令参数的使用方法: touch [-acm][-r ...
- linux中执行命令权限不够怎样处理
在linux中执行命令权限不够就要增加权限,先看遇到的情况 查看权限情况 那就赋予权限 执行命令
- Linux中监控命令top命令使用方法详解
收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章.总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就 ...
- Linux中date命令的各种实用方法--转载
在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,自己也曾经为时间的各种表示方法和如何修改时间而困惑,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的 ...
- linux中查找命令find、locate、whereis、which、type区别
linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...
- Linux中service命令和/etc/init.d/的关系
Linux中service命令和/etc/init.d/的关系 service xxx启动 /etc/init.d/ 目录下的xxx脚本 如一个脚本名为 mysvc保存在/etc/init.d/下 ...
- 13 Basic Cat Command Examples in Linux(转) Linux中cat命令的13中基本用法
Cat (串联) 命令是Linux/Unix开源系统中比较常用的一个命令.我们可以通过Cat命令创建一个或多个文件,查看文件内容,串联文件并将内容输出到终端设备或新的文件当中,这篇文章我们将会以实例的 ...
- 12个 Linux 中 grep 命令的超级用法实例
12个 Linux 中 grep 命令的超级用法实例 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一 ...
- Linux中find命令的用法汇总
Linux中find命令的用法汇总 https://www.jb51.net/article/108198.htm
随机推荐
- Cool Edit Pro 2.0详细教程(转)
系统介绍一下用Cooledit pro 2.0录制自唱歌曲的一个全过程,希望对喜欢唱歌,想一展歌喉的朋友有所帮助. 录制原声 录音是所有后期制作加工的基础,这个环节出问题,是无法靠后期加工来补救的 ...
- 闲扯 Javascript 03 时钟和QQ延时框
时钟 : 所用到得图片 : 开启定时器 setInterval 间隔型 setTimeout 延时型 停止定时器 clearInterval clearTimeout 效果思路 获取系统时间 D ...
- 【转】文件恢复神器extundelete
参考博文: 1.Linux中VMware虚拟机增加磁盘空间的扩容操作 http://www.net130.com/CMS/Pub/special/special_virtual/special_vir ...
- CentOS6.5 服务器+apache5.3绑定多个域名+SELinux设置
下面简单的介绍了如何通过设置Apache的http.conf文件,进行多个域名以及其相关的二级域名的绑定(假设我们要绑定的域名是minidx.com和ntt.cc,二级域名是blog.minidx.c ...
- APP迁移
APP架子迁移 在完成上一篇之后,断断续续的开始重构我的Android项目代码,现在终于完成了.在重构期间又仔细阅读了一些开源项目的源码及文章,并询问了一些大神思路,按照理解自己完成了MVP结构的重构 ...
- 统一横轴墨卡托投影(UTM)
UTM 坐标系统使用基于网格的方法表示坐标.UTM 系统将地球分为 60 个区,每一个区基于横轴墨卡托投影.画图法中的地图投影方法能够在平面中表示一个两维的曲面,比如一个标准地图.图 1 展示了一个横 ...
- oralce 简单错误汇集。。。。。
1.ora-12560 TNS:协议适配器错误 实例名被错误修改或者oracle 服务没有正常启动.
- .cmd文件与.bat文件
.cmd文件与.bat文件的区别 包括ASSOC.FTYPE.APPEND.PATH.PROMPT.SET等6个命令在.bat和命令行环境下与.cmd环境下的执行表现不尽相同在.cmd环境下这些命令无 ...
- Java基础02 方法与数据成员
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在Java基础01 从HelloWorld到面向对象,我们初步了解了对象(obje ...
- JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)
hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加 ...