Solaris

如何製作對按鈕按下做出反應的程序(例如“q”上的“更多”)

  • October 31, 2015

我試圖意識到,pg\more\less 實用程序是如何工作的。例如,cat somebigfile | 更多的。現在更多的是互動模式。他的 fd 表是:0(從 cat 讀取管道)1(stdout)2(stderr)

我可以在 3 fd 上打開 /dev/tty 並從那裡讀取命令。但是更多的可以執行一些動作而不需要輸入。在 linux 上我可以使用 ncurses。我需要實現什麼才能在 Solaris 上實現它?

基本思想是從您的輸入中讀取()一個字元;以http://bazaar.launchpad.net/~vcs-imports/util-linux-ng/trunk/view/head:/text-utils/more.c#L1908為例(我通過Google搜尋結果發現https://stackoverflow.com/questions/9854267/implementing-the-more-unix-utility-command):

int readch(void)
{
   unsigned char c;

   errno = 0;
   if (read(fileno(stderr), &c, 1) <= 0) {
       if (errno != EINTR)
           end_it(0);
       else
           c = otty.c_cc[VKILL];
   }
   return (c);
}

引用自:https://unix.stackexchange.com/questions/239933