Вход/Регистрация
UNIX — универсальная среда программирования
вернуться

Керниган Брайан Уилсон

Шрифт:

 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 <stdio.h>

#include <sys/types.h>

#include <sys/stat.h>

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

  • Читать дальше
  • 1
  • ...
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: