UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
*pto1 = *pfrom1;
*pcmd = *s++;
a2i(*pfrom2);
if (*s == ',') {
s++;
a2i(*pto2);
} else
*pto2 = *pfrom2;
}
Макрокоманда
a2i
Функции
nskip
ncopy
nskip(fin, n) /* skip n lines of file fin */
FILE *fin;
{
char buf[BUFSIZ];
while (n-- > 0)
fgets(buf, sizeof buf, fin);
}
ncopy(fin, n, fout) /* copy n lines from fin to fout */
FILE *fin, *fout;
{
char buf[BUFSIZ];
while (n-- > 0) {
if (fgets(buf, sizeof buf, fin) == NULL)
return;
fputs(buf, fout);
}
}
Программа
idiff
/tmp
Если критически подойти к
zap
idiff
Добавьте команду q к
idiff
'<'
'>'
Модифицируйте
idiff
idiff
diff
-b
-h
idiff
$ idiff -е другой редактор file1 file2
Как взаимодействуют эти две модификации?
Измените
idiff
popen
pclose
diff
Если один из аргументов
diff
idiff
6.9 Доступ к среде
Из Си-программы легко "добраться" до переменных в среде
shell
p
$ p -36...
Вы могли бы всегда вставлять файл
shell
bin
$ cat /usr/you/bin/p
exec /usr/bin/p -36 $*
$
Третье решение модифицировать
p
PAGESIZE
.profile
PAGESIZE=36
export PAGESIZE
Функция
getenv("var")
NULL
getenv
getenv
/* p: print input in chunks (version 3) */
...
char *p, *getenv();
progname = argv[0];
if ((p=getenv("PAGESIZE")) != NULL)
pagesize = atoi(p);
if (argc > 1 && argv[1][0] == '-') {
pagesize = atoi(&argv[1][1]);
argc--;
argv++;
}
Флаги обрабатываются вслед за переменной среды, так что любой явно заданный размер страницы в конце концов заменит неявно заданный.
Модифицируйте
idiff
PAGESIZE
Стандартная библиотека ввода-вывода была разработана Д. Ритчи вслед за переносимой библиотекой ввода вывода М. Леска. Оба пакета имели целью предоставить пользователю стандартные средства, чтобы можно было переносить программы без изменений с UNIX в другие системы.
Наша версия
p
adb
sdb
lint
Программа
idiff
diff
diff