设为首页 加入收藏

TOP

Linux C编程——more命令的实现
2014-11-24 01:45:41 来源: 作者: 【 】 浏览:0
Tags:Linux 编程 more 命令 实现

Linux C编程——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 C编程小例子——pwd命令的.. 下一篇Java 解析 apk 的签名

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: