UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Программа
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 |
