UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Таблица 6.4: Полезные стандартные функции ввода-вывода
Модифицируйте
zap
zap
getpid(2)
Постройте
fgrep(1)
strindex
fgrep
6.8 Диалоговая программа сравнения файлов:
idiff
Поддерживать две чем-то отличающиеся версии файла, каждая из которых содержит часть нужного вам файла, довольно распространенная проблема. Зачастую она возникает в тех случаях, когда изменения вносятся независимо двумя разными людьми. Программа
diff
В этом разделе мы напишем программу
idiff
diff
diff
idiff
idiff.out
<b>file1: file2:</b>
This is This is
a test not a test
of of
your our
skill ability.
and comprehension.
diff
$ diff file1 file2
2c2
< a test
---
> not a test
4,6c4,5
< your
< skill
< and comprehension.
---
> our
> ability.
$
Диалог с
idiff
$ idiff file1 file2
2c2
< a test
---
> not a test
? >
4,6с4,5
< your
< skill
< and comprehension.
---
> our
> ability.
? <
idiff output in file idiff.out
$ cat idiff.out
This is
not a test of
your skill
and comprehension.
$
Если вместо
<
>
е
idiff
ed
е
your
skill
and comprehension.
---
our
ability.
Все, что пишется редактором обратно в файл, идет в окончательный выходной поток.
И, наконец, любая команда может быть выполнена внутри
idiff
Технически самая трудная часть работы
diff
idiff
diff
idiff
diff
/* idiff: interactive diff */
#include <stdio.h>
#include <ctype.h>
char *progname;
#define HUGE 10000 /* large number of lines */
main(argc, argv)
int argc;
char *argv[];
{
FILE *fin, *fout, *f1, *f2, *efopen();
char buf[BUFSIZ], *mktemp();
char *diffout = "idiff.XXXXXX";
progname = argv[0];
if (argc != 3) {
fprintf(stderr, "Usage: idiff file1 file2n");
exit(1);
}
f1 = efopen(argv[1], "r");
f2 = efopen(argv[2], "r");