linux中得more命令,Linux中more命令的实现

#include

#include

#include

#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中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

随机推荐

nodejs字符与字节之间的转换

new Buffer("Hello World").toString("base64"); /* yields SGVsbG8gV29ybGQNCg== */ ...

WebRTC手记之本地音频采集

转载请注明出处:http://www.cnblogs.com/fangkm/p/4374668.html 上一篇博文介绍了本地视频采集,这一篇就介绍下音频采集流程,也是先介绍WebRTC原生的音频采集 ...

CATextLayer

CATextLayer *layer = [[CATextLayer alloc] init]; layer.frame  = CGRectMake(0, 300, 100, 100); 字体模糊 l ...

eclipse 代码中突然出现特殊字符

在写代码的时候,不知道点到了 eclipse 的哪个属性,代码中就出现了一些特殊字符,也不能删除. 请问,在 eclipse 中该怎么设置,才能将这些字符去掉. 如下图所示: 解决方法: 选择Wind ...

spring MVC 下载文件(转)

springle MVC中如何下载文件呢? 比struts2 下载文件简单得多 先看例子: @ResponseBody @RequestMapping(value = "/download& ...

H3C TE BGP拓扑排错报告

BGP排错报告 故障一:PPP链路 ...

Excel相关问题

Excel默认永远使用最后安装的那个Excel版本打开.但是如果有一个Excel已经启动了,则使用那个Excel打开. 1.打开“开发工具”选项卡2007中:[Excel选项]-[常用]2010中:[ ...

【读书笔记】C++Primer---第二章

1.C++基本数据类型:字符型.整型.浮点型等: 2.算术类型如下表,下表只是表示C++要求的最小储存空间,但是一般编译器使用的都比所要求的储存空间大,以前类型所能表示的最大值也因机器的不同而有不同的 ...

C#中public、private、protected等关键字说明

public 公有访问.不受任何限制.private 私有访问.只限于本类成员访问,子类,实例都不能访问.protected 保护访问.只限于本类和子类访问,实例不能访问.internal 内部访问. ...

Elastic Stack之搜索引擎基础

Elastic Stack之搜索引擎基础 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.搜索引擎概述 1>.什么是搜索引擎 搜索引擎(Search Engine)是指根 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值