UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
root:3d.fHR5KoB.3s:0:l:S.User:/:!ed
?
!
Для решения этой проблемы необходимо знать, как управлять процессами в UNIX, о чем речь пойдет в разд. 7.4. Пока же примите к сведению, что использование стандартной библиотечной функции
system
ttyin
system
Итак, мы написали две программы
vis
p
cat
cat
-v
-р
Основной принцип состоит в том, что программе следует выполнять только свою основную работу. Если у нее появляется слишком много функций, она становится большой, медленной, ее трудно сопровождать и использовать. В самом деле, ряд свойств часто остается невостребованным, поскольку пользователи никак не могут запомнить флаги.
Поэтому
cat
vis
cat
vis
cat
p
cat
p
p
Работает ли p нормально, если
pagesize
Что еще можно было бы сделать с
p
Используйте средства манипуляций файлами, встроенные в
exec
shell
sh(1)
system
ttyin
Если вы забыли определить источник ввода для
p
isatty(3)
6.5 Пример:
pick
Версия
pick
shell
'-'
pick
Почему бы в отсутствие аргументов просто не читать стандартный входной поток? Рассмотрим вторую версию команды
zap
kill $SIG `pick`ps-ag | egrep "$*"` | awk '{print $1}'`
Что происходит, если шаблон
egrep
pick
zap
'-'
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
Если есть
pick
rm -i