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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

argv++;

}

if (argc < 2)

error("Usage: %s [-10] command", progname);

if ((pid=fork()) == 0) {

execvp(argv[1], &argv[1]);

error("couldn't start %s", argv[1]);

}

signal(SIGALRM, onalarm);

alarm(sec);

if (wait(&status) == -1 || (status & 0177) != 0)

error("%s killed", argv[1]);

exit((status >> 8) & 0377);

}

onalarm() /* kill child when alarm arrives */

{

kill(pid, SIGKILL);

}

#include "error.c"

3.8.55 toolong

length($0) > 72 { print "Line", NR, "too long:", substr($0,1,60) }

3.8.56 ttyin1.c

ttyin() /* process response from /dev/tty (version 1) */

{

char buf[BUFSIZ];

FILE *efopen();

static FILE *tty = NULL;

if (tty == NULL)

tty = efopen("/dev/tty", "r");

if (fgets(buf, BUFSIZ, tty) == NULL || buf[0] == 'q')

exit(0);

else /* ordinary line */

return buf[0];

}

3.8.57 ttyin2.c

ttyin() /* process response from /dev/tty (version 2) */

{

char buf[BUFSIZ];

FILE *efopen();

static FILE *tty = NULL;

if (tty == NULL)

tty = efopen("/dev/tty", "r");

for (;;) {

if (fgets(buf,BUFSIZ,tty) == NULL || buf[0] == 'q')

exit(0);

else if (buf[0] == '!') {

system(buf+1); /* BUG here */

printf("!\n");

}

else /* ordinary line */

return buf[0];

}

}

#include "system.c"

3.5.58 vis1.c

/* vis: make funny characters visible (version 1) */

#include

#include

main() {

int c;

while ((c = getchar()) != EOF)

if (isascii(c) &&

(isprint(c) || c=='\n' || c=='\t' || c==' '))

putchar(c);

else

printf("\\%03o", c);

exit(0);

}

3.5.59 vis2.c

/* vis: make funny characters visible (version 2) */

#include

#include

main(argc, argv)

int argc;

char *argv[];

{

int с, strip = 0;

if (argc > 1 && strcmp(argv[1] , "-s") == 0)

strip = 1;

while ((c = getchar()) != EOF) if (isascii(c) &&

(isprint(c) || c=='\n' || c=='\t' || c==' '))

putchar(c);

else if (!strip)

printf("\\%03o", c);

exit(0);

}

3.8.60 vis3.c

/* vis: make funny characters visible (version 3) */

#include

#include

int strip = 0; /* 1 => discard special characters */

main(argc, argv)

int argc;

char *argv[];

{

int i;

FILE *fp;

while (argc > 1 && argv[1][0] == '-') {

switch (argv[1][1]) {

case 's': /* -s: strip funny chars */

strip = 1;

break;

default:

fprintf(stderr, "%s: unknown arg %s\n",

argv[0], argv[1]);

exit(1);

}

argc--;

argv++;

}

if (argc == 1)

vis(stdin);

for (i = 1; i < argc; i++)

if ((fp=fopen(argv[i], "r")) == NULL) {

fprintf(stderr, "%s: can't open %s\n",

argv[0], argv[i]);

exit(1);

} else {

vis(fp);

fclose(fp);

}

exit(0);

}

vis(fp) /* make chars visible in FILE *fp */

FILE *fp;

{

int c;

while ((c = getc(fp)) != EOF)

if (isascii(c) &&

(isprint(c) || c=='\n' || c=='\t' || c==' '))

putchar(c);

else if (!strip)

printf("\\%03o", с);

}

3.8.61 waitfile.c

/* waitfile: wait until file stops changing */

#include

#include

#include

char *progname;

main(argc, argv)

int argc;

char *argv[];

{

int fd;

struct stat stbuf;

time_t old_time = 0;

progname = argv[0];

if (argc < 2)

error("Usage: %s filename [cmd]", progname);

if ((fd = open(argv[1], 0)) == -1)

error("can't open %s", argv[1]);

fstat(fd, &stbuf);

while (stbuf.st_mtime != old_time) {

old_time = stbuf.st_mtime;

sleep(60);

fstat(fd, &stbuf);

}

if (argc == 2) { /* copy file */

execlp("cat", "cat", argv[1], (char*)0);

error("can't execute cat %s", argv[1]);

} else { /* run process */

execvp(argv[2], &argv[2]);

error("can't execute %s", argv[2]);

}

exit(0);

}

#include "error.c"

3.8.62 watchfor

# watchfor: watch for someone to log in

PATH=/bin:/usr/bin

case $# in

0) echo 'Usage: watchfor person' 1>&2; exit 1

esac

until who | egrep "$1"

do

sleep 60

done

3.8.63 watchwho

# watchwho: watch who logs in and out

PATH=/bin:/usr/bin

new=/tmp/wwho1.$$

old=/tmp/wwho2.$$

> $old # create an empty file

while : # loop forever

do

who >$new

diff $old $new

mv $new $old

sleep 60

done | awk '/>/ { $1 = "in: "; print }

/</ { $1 = "out: "; print }'

3.8.64 which1

# which cmd: which cmd in PATH is executed, version 1

case $# in

0) echo 'Usage: which command' 1>&2; exit 2

esac

for i in `echo $PATH | sed 's/^:/.:/

s/::/:.:/g

s/:$/:./

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

Интервал:

Закладка:

Сделать

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

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


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

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

x