<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的實(shí)現(xiàn)

    實(shí)現(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?
    有兩個(gè)子函數(shù),do_more()和see_more(),前者處理顯示,后者處理命令。

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

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

    主站蜘蛛池模板: 爱爱帝国亚洲一区二区三区| 色久悠悠婷婷综合在线亚洲| 久久久久亚洲AV无码麻豆| 春意影院午夜爽爽爽免费| 亚洲无mate20pro麻豆| 中文字幕在线免费| 午夜免费福利在线| 在线a亚洲老鸭窝天堂av高清| 免费看韩国黄a片在线观看| 国产成人精品日本亚洲11| 成人性生交大片免费看无遮挡| 亚洲国产成人精品激情| 毛片a级毛片免费播放100| 亚洲大码熟女在线观看| 亚洲AV无码一区二区三区国产| 免费国产高清毛不卡片基地| 亚洲伊人成无码综合网| 永久免费av无码网站yy| 亚洲尹人香蕉网在线视颅| 欧洲乱码伦视频免费| 亚洲av永久无码| 日韩免费一区二区三区在线 | 女人被男人躁的女爽免费视频| 亚洲色欲色欱wwW在线| 可以免费观看的一级毛片| 成人无码区免费A∨直播| 亚洲五月六月丁香激情| 精品久久久久久久久免费影院| 午夜亚洲国产理论片二级港台二级| yy6080亚洲一级理论| a级毛片在线免费| 亚洲人成777在线播放| 国产免费一区二区三区VR| 中文在线免费观看| 亚洲av午夜精品无码专区| 亚洲成av人片在线观看天堂无码| 国产在线观看免费av站| 亚洲一区二区三区久久久久| 五月婷婷亚洲综合| 国产成人免费高清激情明星| 美女被羞羞网站免费下载|