Брайан Керниган - UNIX — универсальная среда программирования

Здесь есть возможность читать онлайн «Брайан Керниган - UNIX — универсальная среда программирования» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 1992, ISBN: 1992, Издательство: Финансы и статистика, Жанр: ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

UNIX — универсальная среда программирования: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «UNIX — универсальная среда программирования»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
.
Для программистов-пользователей операционной системы UNIX.

UNIX — универсальная среда программирования — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «UNIX — универсальная среда программирования», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

switch (spname(argv[i], buf)) {

case -1: /* no match possible */

fp = efopen(argv[i], "r");

break;

case 1: /* corrected */

fprintf (stderr, "\"%s\"? ", buf);

if (ttyin() == 'n')

break;

argv[i] = buf;

/* fall through... */

case 0: /* exact match */

fp = efopen(argv[i], "r");

print(fp, pagesize);

fclose(fp);

}

exit(0);

}

print(fp, pagesize) /* print fp in pagesize chunks */

FILE *fp;

int pagesize;

{

static int lines = 0; /* number of lines so far */

char buf[BUFSIZ];

while (fgets(buf, sizeof buf, fp) != NULL)

if (++lines < pagesize) fputs(buf, stdout);

else {

buf[strlen(buf)-1] = '\0';

fputs(buf, stdout);

fflush(stdout);

ttyin();

lines = 0;

}

}

#include "ttyin2.c"

#include "efopen.c"

#include "spname.c"

3.8.42 pick1

# pick: select arguments

PATH=/bin:/usr/bin

for i # for each argument

do

echo -n "$i? " >/dev/tty

read response

case $response in

y*) echo $i ;;

q*) break

esac

done

3.8.43 pick.c

/* pick: offer choice on each argument */

#include

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] = '\0'; /* drop newline */

pick(buf);

}

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("%s\n", s);

}

#include "ttyin2.c"

#include "efopen.c"

3.8.44 prpages

# prpages: compute number of pages that pr will print

wc $* |

awk '!/ total$/ { n += int(($1+55) / 56) }

END { print n }'

3.8.45 put

# put: install file into history

PATH=/bin:/usr/bin

case $# in

1) HIST=$1.H ;;

*) echo 'Usage: put file' 1>&2; exit 1 ;;

esac

if test ! -r $1

then

echo "put: can't open $1" 1>&2

exit 1

fi

trap 'rm -f /tmp/put.[ab]$$; exit 1 12 15

echo -n 'Summary: '

read Summary

if get -o /tmp/put.a$$ $1 # previous version

then # merge pieces

cp $1 /tmp/put.b$$ # current version

echo `getname` `date` $Summary" >>/tmp/put.b$$

diff -e $1 /tmp/put.a$$ >>/tmp/put.b$$ # latest diffs

sed -n '/^@@@/,$р' <$HIST >>/tmp/put.b$$ # old diffs

overwrite $HIST cat /tmp/put.b$$ # put it back

else # make a new one

echo "put: creating $HIST"

cp $1 $HIST

echo "@@@ `getname` `date` $Summary" >>$HIST

fi

rm -f /tmp/put.[ab]$$

3.8.46 readslow.c

/* readslow: keep reading, waiting for more */

#define SIZE 512 /* arbitrary */

main() {

char buf[SIZE];

int n;

for (;;) {

while ((n = read(0, buf, sizeof buf)) > 0)

write(1, buf, n);

sleep(10);

}

}

3.8.47 replace

# replace: replace str1 in files with str2, in place

PATH=/bin:/usr/bin

case $# in

0|1|2) echo 'Usage: replace str1 str2 files' 1>&2; exit 1

esac

left="$1"; right="$2"; shift; shift

for i

do

overwrite $i sed "s@$left@$right@g" $i

done

3.8.48 signaltest.c

#include

#include

#include

extern int errno;

main() {

int с, n;

char buf[100];

int onintr();

signal(SIGINT, onintr);

for (;;) {

n = read(0, buf, 100);

if (n > 0)

printf(buf);

else {

if (errno == EINTR) {

errno = 0;

printf("interrupt side %d\n", n);

} else {

printf("true end of file %d\n", n);

}

}

}

}

onintr() {

signal(SIGINT, onintr);

printf("interrupt\n");

}

3.8.49 spname.c

/* spname: return correctly spelled filename */

/*

* spname(oldname, newname) char *oldname, *newname;

* returns -1 if no reasonable match to oldname,

* 0 if exact match,

* 1 if corrected.

* stores corrected name in newname.

*/

#include

#include

spname(oldname, newname)

char *oldname, *newname;

{

char *p, guess[DIRSIZ+1], best[DIRSIZ+1];

char *new = newname, *old = oldname;

for (;;) {

while (*old == '/') /* skip slashes */

*new++ = *old++;

*new = '\0';

if (*old == '\0') /* exact or corrected */

return strcmp(oldname, newname) != 0;

p = guess; /* copy next component into guess */

for ( ; *old != '/' && *old != '\0'; old++)

if (p < guess+DIRSIZ)

*p++ = *old;

*p = '\0';

if (mindist(newname, guess, best) >= 3)

return -1; /* hopeless */

for (p = best; *new = *p++; ) /* add to end */

new++; /* of newname */

}

}

mindist(dir, guess, best) /* search dir for guess */

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «UNIX — универсальная среда программирования»

Представляем Вашему вниманию похожие книги на «UNIX — универсальная среда программирования» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «UNIX — универсальная среда программирования»

Обсуждение, отзывы о книге «UNIX — универсальная среда программирования» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x