UNIX — универсальная среда программирования - Керниган Брайан Уилсон
Конец ознакомительного фрагментаКупить книгу
Ознакомительная версия. Доступно 29 страниц из 187
Программа
lintlintlint6.7 Пример:
zapПрограмма
zapshellzappszappspopen(3)fopenpclose/* zap: interactive process killer */#include <stdio.h>#include <signal.h>char *progname; /* program name for error message */char *ps = "ps -ag"; /* system dependent */main(argc, argv) int argc; char *argv[];{ FILE *fin, *popen(); char buf[BUFSIZ]; int pid; progname = argv[0]; if ((fin = popen(ps, "r")) == NULL) { fprintf(stderr, "%s: can't run %sn", progname, ps); exit(1); } fgets(buf, sizeof buf, fin); /* get header line */ fprintf(stderr, "%s", buf); while (fgets(buf, sizeof buf, fin) != NULL) if (argc == 1 || strindex(buf, argv[1]) >= 0) { buf[strlen(buf)-1] = ' '; /* suppress n */ fprintf(stderr, "%s? ", buf); if (ttyin() == 'y') { sscanf(buf, "%d", &pid); kill(pid, SIGKILL); } } exit(0);}Мы писали программу, чтобы использовать
ps -agПервый вызов
fgetspsФункция
sscanfscanf(3)killSIGKILL<signal.h>Если аргументы отсутствуют,
zappszappsstrindex(s1, s2)psstrncmpstrindexs2s1strindex(s, t) /* return index of t in s, -1 if none */ char *s, *t;{ int i, n; n = strlen(t); for (i = 0; s[i] != ' '; i++) if (strncmp(s+i, t, n) == 0) return i; return -1;}В табл. 6.4 представлены широко используемые функции из стандартной библиотеки ввода вывода.
fp=fopen(s, mode) | Открыть файл smode "r""w""a" |
c=gets(fp) | Читать символ: getchar()getc(stdin) |
putc(c, fp) | Записать символ: putchar(c)putc(c, stdout) |
ungetc(c, fp) | Вернуть символ во входной файл fp |
scanf(fmt, a1, ...) | Читать символы из stdina1...fmta<i>i</i> |
fscanf(fp,...) | Читать из файла fp |
sscanf(s,...) | Читать из строки s |
printf(fmt, a1, ...) | Форматировать a1fmtstdout |
fprintf(fp, ...) | Печатать ...fp |
sprintf(s, ...) | Печатать ... |
fqets(s, n, fp) | Читать не более nsfpNULL |
fputs(s, fp) | Печатать строку sfp |
fflush(fp) | Занести буферизованные данные выходного потока в файл fp |
fclose(fp) | Закрыть файл fp |
fp=popen(s, mode) | Открыть программный канал для команды sfopen |
pclose(fp) | Закрыть программный канал fp |
system(s) | Запустить команду s |
Ознакомительная версия. Доступно 29 страниц из 187
Рекомендуем к прочтению
Искусство программирования для Unix - Реймонд Эрик Стивен
Операционная система UNIX - Робачевский Андрей Михайлович
Алексей Федорчук - Вопросы истории: UNIX, Linux, BSD и другие
Андрей Робачевский - Операционная система UNIX
Брайан Керниган - UNIX — универсальная среда программирования
Эрик Реймонд - Искусство программирования для Unix