UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Программа
lint
lint
lint
6.7 Пример:
zap
Программа
zap
shell
zap
ps
zap
ps
popen(3)
fopen
pclose
/* 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
Первый вызов
fgets
ps
Функция
sscanf
scanf(3)
kill
SIGKILL
<signal.h>
Если аргументы отсутствуют,
zap
ps
zap
ps
strindex(s1, s2)
ps
strncmp
strindex
s2
s1
strindex(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) | Открыть файл s mode "r" "w" "a" |
c=gets(fp) | Читать символ: getchar() getc(stdin) |
putc(c, fp) | Записать символ: putchar(c) putc(c, stdout) |
ungetc(c, fp) | Вернуть символ во входной файл fp |
scanf(fmt, a1, ...) | Читать символы из stdin a1 ... fmt a<i>i</i> |
fscanf(fp,...) | Читать из файла fp |
sscanf(s,...) | Читать из строки s |
printf(fmt, a1, ...) | Форматировать a1 fmt stdout |
fprintf(fp, ...) | Печатать ... fp |
sprintf(s, ...) | Печатать ... |
fqets(s, n, fp) | Читать не более n s fp NULL |
fputs(s, fp) | Печатать строку s fp |
fflush(fp) | Занести буферизованные данные выходного потока в файл fp |
fclose(fp) | Закрыть файл fp |
fp=popen(s, mode) | Открыть программный канал для команды s fopen |
pclose(fp) | Закрыть программный канал fp |
system(s) | Запустить команду s |