Операционная система UNIX. Руководство программиста

Программа show


Программа show просматривает файл, показывая его содержимое экран за экраном в ответ на нажатия пробела. Программа вызывает cbreak(), чтобы не нужно было нажимать возврат каретки после пробела, и noecho(), чтобы пробел не выводился на экран. Не обсуждавшаяся ранее подпрограмма nonl() вызывается для дополнительной оптимизации. Также не обсуждавшаяся ранее подпрограмма idlok() вызывается, чтобы дать возможность вставлять и удалять строки [дополнительную информацию см. в curses(3X)]. Заметьте, что вызываются еще подпрограммы clrtoeol(), clrtobot().

#include <curses.h> #include <signal.h>

main (argc, argv) int argc; char **argv; { FILE *fd; char linebuf[BUFSIZ]; int line; void done(), perror(), exit();

if (argc != 2) { fprintf (stderr, "Вызов: %s файл\n", argv [0]); exit (1); }

fd = fopen (argv [1], "r"); if (fd == NULL) { perror (argv [1]); exit (2); }

signal (SIGINT, done);

initscr (); noecho (); cbreak (); nonl (); idlok (stdscr, TRUE);

while (1) { move (0, 0); for (line = 0; line < LINES; line++) { if (!fgets (linebuf, sizeof linebuf, fd)) { clrtobot (); done (); } move (line, 0); printw ("%s", linebuf); } refresh (); if (getch == 'q') done(); } }

void done () { move (LINES - 1, 0); clrtoeol (); refresh (); endwin (); exit (0); }



Содержание раздела