UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
root:3d.fHR5KoB.3s:0:l:S.User:/:!ed?!Для решения этой проблемы необходимо знать, как управлять процессами в UNIX, о чем речь пойдет в разд. 7.4. Пока же примите к сведению, что использование стандартной библиотечной функции
systemttyinsystemИтак, мы написали две программы
vispcatcat-v-рОсновной принцип состоит в том, что программе следует выполнять только свою основную работу. Если у нее появляется слишком много функций, она становится большой, медленной, ее трудно сопровождать и использовать. В самом деле, ряд свойств часто остается невостребованным, поскольку пользователи никак не могут запомнить флаги.
Поэтому
catviscatviscatpcatppРаботает ли p нормально, если
pagesizeЧто еще можно было бы сделать с
pИспользуйте средства манипуляций файлами, встроенные в
execshellsh(1)systemttyinЕсли вы забыли определить источник ввода для
pisatty(3)6.5 Пример:
pickВерсия
pickshell'-'pickПочему бы в отсутствие аргументов просто не читать стандартный входной поток? Рассмотрим вторую версию команды
zapkill $SIG `pick`ps-ag | egrep "$*"` | awk '{print $1}'`Что происходит, если шаблон
egreppickzap'-'cat/* pick: offer choice on each argument */#include <stdio.h>char *progname; /* program name for error message */main(argc, argv) int argc; char *argv[];{ int i; char buf[BUFSIZ]; progname = argv[0]; if (argc == 2 && strcmp(argv[1], "-") == 0) /* pick - */ while (fgets(buf, sizeof buf, stdin) != NULL) { buf[strlen(buf)-1] = ' '; /* drop newline */ pick(buf); } else for (i = 1; i < argc; i++) pick(argv[i]); exit(0);}pick(s) /* offer choice of s */ char *s;{ fprintf(stderr, "%s? ", s); if (ttyin() == 'y') printf("%sn", s);}Версия
pickЕсли есть
pickrm -i
