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

简介:
/*
* =====================================================================================
*
* 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/archive/2012/01/13/2321355.html,如需转载请自行联系原作者
相关文章
|
21天前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
138 3
|
17天前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
176 73
|
10天前
|
Linux Shell
Linux 中 Tail 命令的 9 个实用示例
Linux 中 Tail 命令的 9 个实用示例
38 6
Linux 中 Tail 命令的 9 个实用示例
|
15天前
|
Linux 应用服务中间件 nginx
|
1天前
|
机器学习/深度学习 存储 Linux
linux中强大且常用命令:find、xargs、grep
linux中强大且常用命令:find、xargs、grep
23 9
|
1天前
|
SQL 移动开发 Linux
linux下find、grep命令详解
linux下find、grep命令详解
25 8
|
8天前
|
存储 Linux 编译器
linux中vim介绍以及常用命令大全
linux中vim介绍以及常用命令大全
30 8
|
6天前
|
设计模式 Java Linux
Linux的20个常用命令
Linux的23个常用命令
Linux的20个常用命令
|
10天前
|
机器学习/深度学习 安全 网络协议
Web安全-Linux网络命令
Web安全-Linux网络命令
12 1
|
15天前
|
Ubuntu Linux Shell
Linux系统命令 安装和文件相关命令
本文档详细介绍了Linux系统中的常用命令,包括软件安装卸载命令如`dpkg`和`apt-get`,压缩与解压命令如`gzip`、`bzip2`和`xz`,以及`tar`命令用于打包和解包。此外还介绍了文件分割命令`split`,文件操作命令如`cat`、`head`、`tail`、`more`、`less`等,管道命令和`wc`、`grep`、`find`、`cut`、`sort`、`uniq`、`diff`等实用工具。最后,文档还讲解了文件属性相关的命令如`chmod`、`chown`、`chgrp`以及创建硬链接和软链接的`ln`命令。