开发者社区> gnuhpc> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【Linux开发习作】more命令的编写(1)

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ /* * ===================================================================================== * * Filename: more01.
+关注继续查看

 作者:gnuhpc 
出处:http://www.cnblogs.com/gnuhpc/

/*
* =====================================================================================
*
* Filename: more01.c
*
* Description: A User Version of Command more
*
* Version: 1.0
* Created: 12/03/2008 06:36:56 PM
* Revision: none
* Compiler: gcc
*
* Author: Futuredaemon (BUPT),gnuhpc@gmail.com
* Company: BUPT_UNITED
*
* =====================================================================================
*/

#include <stdlib.h>
#include <stdio.h>


#define PAGELEN 24 /*The number of pape to be printed */
#define LINELEN 512 /*The length of Line to be printed */

void do_more(FILE *);
int see_more(FILE *);

int main ( int argc, char *argv[] )
{
FILE *fp; /* File Descriptor */
if ( argc ==1 ) /* If no files exist,use the keyboard */
do_more(stdin);
else
while(--argc)
if((fp=fopen(*++argv,"r"))!=NULL)
{
do_more(fp);
fclose(fp);
}
else
exit(1);
return EXIT_SUCCESS;
} /* ---------- end of function main ---------- */

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)
{
//printf("This is a test!");
if(c == 'q')
return 0;
if(c == ' ')
return PAGELEN;
if(c == '/n')
return 1;
}
return 0;
}


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux的10个最危险命令
Linux的10个最危险命令
0 0
11月29日云栖精选夜读 | Linux里10个最危险的命令
Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。 这篇文章将会向你介绍十条命令,但你最好不要尝试着去使用。 当然,以下命令通常都是在root权限下才能将愚蠢发挥到无可救药;在普通用户身份下,破坏的只是自己的一亩三分地。
2467 0
一些极度危险的linux命令
在linux中有些命令可能功能强大,方便快捷,但是这些命令在测试环境中有些可以用,但别在生产上挑战。有些命令一敲,可能你的职业生涯由此转折。 关于rm -rf   对于这个命令真没什么好说的,最好的挽救措施就是备份,可能在有些环境中这类命令都是禁用的,但是不管怎么样,注意备份。
515 0
[linux]永远不要在 Linux 执行的 10 个最危险的命令
Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正 在做什么时候。这篇文章并不打算引来你对Linux或linux 命令行的愤怒。
1082 0
97条 Linux 常用命令总结,速速收藏!(二)
Linux在我们学习和工作中都会遇到,了解一点常用命令让你不再是Linux小白。跟我一起来学习这些常用命令吧~
0 0
Linux常用的基础命令总结
Linux常用的基础命令总结man 查看英文命令帮助 可以看作--help 拷贝目录的命令cp -a 包含所有 ls -a 显示所有文件包括隐藏文件 -ld ls -F 过滤目录文件(给不同类型文件结尾加上不同的符号) -h显示文件的k,M,G -i显示文件的索引inode ls -l --time-style=long-iso 文件 更好的显示文件的修改时间 ls -p 查找出来的内容添加斜线。
1037 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载
《使用Serverless服务快速开发小程序》
立即下载
ECS系统指南之Linux系统诊断
立即下载