【Linux開發習作】more命令的編寫(1)

來源:互聯網
上載者:User

 作者: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);elsewhile(--argc)if((fp=fopen(*++argv,"r"))!=NULL){do_more(fp);fclose(fp);}elseexit(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;}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.