[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Библиотечные функции - Пример - who | sort
Этот пример демонстрирует использование popen(3) и pclose(3) для
реализации who | sort.
5 Эта строка описывает указатели на входной и выходной файлы.
6 Определяется буфер ввода и вывода в виде массива символов.
Заметьте, что BUFSIZ определен в файле stdio.h.
8-9 Здесь создаются указатели файлов ввода и вывода.
11-12 Здесь символьные данные копируются из вывода команды who(1)
на ввод команды sort(1). Цикл ввода/вывода прекращается,
когда больше нет входных данных. Это происходит, когда
завершается who(1).
14-15 Наконец, закрываются указатели на файлы. Порядок этих
закрытий важен, потому что sort(1) начинает сортировку
только после того, как увидит конец стандартного ввода.
Заметьте, насколько эта программа проще предыдущего примера,
использующего системные вызовы.
Эта программа работает так:
$ whos1
anil tty41 May 8 08:42
bern tty26 May 8 18:14
bern xt082 May 8 14:39
console console May 5 22:47
ipd tty31 May 8 07:46
Файл: whos1.c
БИБЛИОТЕЧНЫЕ ФУНКЦИИ - ПРИМЕР - who | sort
1 #include <stdio.h>
2
3 main()
4 {
5 FILE *fpin, *fpout;
6 char line[BUFSIZ];
7
8 fpin = popen("who", "r");
9 fpout = popen("sort", "w");
10
11 while(fgets(line,BUFSIZ,fpin) != (char *)NULL)
12 fputs(line, fpout);
13
14 pclose(fpin);
15 pclose(fpout);
16 }