<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    選擇java 進(jìn)入自由開放的國度

    隨筆 - 49, 文章 - 3, 評論 - 154, 引用 - 1
    數(shù)據(jù)加載中……

    linux中命令more的實現(xiàn)

    實現(xiàn)了命令more的基本功能,但還有如下缺陷:more的反白先是不能固定,不能顯示百分比,在輸入命令后必需按回車。

    下面是代碼,在FC4上使用gcc 編譯通過。
    ??1?#include?<stdio.h>
    ??2?#include?<stdlib.h>
    ??3?
    ??4?#define?PAGELEN?24
    ??5?#define?LINELEN?512
    ??6?
    ??7?void?do_more(FILE?*);
    ??8?int?see_more();
    ??9?int?see_more(FILE?*);
    ?10?
    ?11?
    ?12?int?main(int?ac,?char?*av[])
    ?13?{
    ?14???FILE?*fp;
    ?15???
    ?16???if?(ac?==?1)
    ?17????????do_more(stdin);
    ?18???else
    ?19????????while(--ac)
    ?20????????????if((fp?=?fopen(*?++av,?"r"))?!=?NULL)
    ?21????????????{
    ?22??????????????do_more(fp);
    ?23??????????????fclose(fp);
    ?24????????????}
    ?25????????????else
    ?26??????????????exit(1);
    ?27??
    ?28????return?0;
    ?29?}
    ?30?
    ?31?void?do_more(FILE?*fp)
    ?32?/*
    ?33??*??read?PAGELEN?lines,?then?call?see_more()?for?further?instructions
    ?34??*/
    ?35?{
    ?36???char?line[LINELEN];
    ?37???int?num_of_lines?=?0;
    ?38???int?see_more(FILE?*),?reply;
    ?39???
    ?40???
    ?41???//?get?input?from?stardard?input?device
    ?42????/*
    ?43????FILE?*fp_tty;
    ?44????fp_tty?=?fopen("/dev/tty",?"r");
    ?45????if?(fp_tty?=?NULL)?
    ?46????????exit(1);*/
    ?47????
    ?48????FILE????*fp_tty;
    ?49?
    ?50?????fp_tty?=?fopen(?"/dev/tty",?"r"?);????????
    ?51?????if?(?fp_tty?==?NULL?)???????????????
    ?52?????????exit(1);???????????????????????????
    ?53?????????
    ?54???while?(fgets(line,?LINELEN,?fp))
    ?55???{
    ?56?????if?(?num_of_lines?==?PAGELEN)
    ?57?????{
    ?58???????//printf("\n======?\n");
    ?59???????//reply?=?see_more();
    ?60???????reply?=?see_more(fp_tty);
    ?61???????if?(reply?==?0)?break;
    ?62???????num_of_lines?-=?reply;
    ?63?????}
    ?64?????
    ?65?????if?(fputs(line,?stdout)?==?EOF)?
    ?66?????????exit(1);
    ?67?????
    ?68?????num_of_lines++;
    ?69?????
    ?70?????//printf("\n======?num_of_lines?=?%d?\n",?num_of_lines);
    ?71???}
    ?72?}
    ?73?
    ?74?int?see_more()
    ?75??/*
    ?76??*??print?message?,?wait?for?response,?return?#?of?lines?to?advance
    ?77??*??q?means?no,?space?means?yes,?CR?means?one?line.
    ?78??*/
    ?79?{
    ?80???int?c;
    ?81???printf("\033[7m?more??\033[m");
    ?82???while?(?(c?=?getchar())?!=?EOF)
    ?83???{
    ?84?????if?(?c?==?'q')??return?0;
    ?85?????if?(?c?==?'?')??return?PAGELEN;
    ?86?????if?(?c?==?'\n')?return?1;
    ?87???}
    ?88???
    ?89???return?0;
    ?90?}
    ?91?
    ?92?int?see_more(FILE?*cmd)
    ?93?{
    ?94???int?c;
    ?95???printf("\033[7m?more??\033[m");
    ?96???while?(?(c?=?getc(cmd))?!=?EOF)
    ?97???{
    ?98?????if?(?c?==?'q')??return?0;
    ?99?????if?(?c?==?'?')??return?PAGELEN;
    100?????if?(?c?==?'\n')?return?1;
    101???}
    102???
    103???return?0;
    104?}
    105?
    有兩個子函數(shù),do_more()和see_more(),前者處理顯示,后者處理命令。

    以后在進(jìn)行改進(jìn)。

    posted on 2006-03-27 08:36 soochow_hhb 以java論成敗 以架構(gòu)論英雄 閱讀(1168) 評論(0)  編輯  收藏 所屬分類: Reading

    主站蜘蛛池模板: 暖暖免费中文在线日本| 国产一区二区三区免费观看在线 | 亚洲人成网站18禁止一区| www成人免费观看网站| 亚洲视频在线播放| 午夜影视在线免费观看| a级毛片免费高清视频| 一二三区免费视频| 久久亚洲精品无码VA大香大香| 免费可以看黄的视频s色| 免费无码婬片aaa直播表情| 亚洲丝袜美腿视频| 免费国产在线观看老王影院| 91精品国产免费| 又长又大又粗又硬3p免费视频| 亚洲理论在线观看| 91香焦国产线观看看免费| 亚洲av中文无码乱人伦在线观看| 亚洲国产精品无码中文字| 韩国欧洲一级毛片免费| 免费女人高潮流视频在线观看| 边摸边吃奶边做爽免费视频网站| 91在线精品亚洲一区二区| 亚洲精品乱码久久久久久蜜桃| 1000部拍拍拍18免费网站| 国产精品亚洲片在线va| 77777亚洲午夜久久多人| 24小时免费直播在线观看| 免费一级毛片无毒不卡| 亚洲一区二区三区国产精品无码| 久久99亚洲综合精品首页| 精品国产麻豆免费网站| av免费不卡国产观看| 成人久久免费网站| 少妇亚洲免费精品| 亚洲国产精品无码第一区二区三区| 亚洲一区二区三区首页| 亚洲国产一二三精品无码| 亚洲av午夜精品一区二区三区| 毛片免费全部播放一级| 国产在线jyzzjyzz免费麻豆|