Вход/Регистрация
UNIX: разработка сетевых приложений
вернуться

Стивенс Уильям Ричард

Шрифт:

помощью daemon_init */

5 static void err_doit(int, int, const char*, va_list);

6 /* Нефатальная ошибка, связанная с системным вызовом.

7 Выводим сообщение и возвращаем управление */

8 void

9 err_ret(const char *fmt , ...)

10 {

11 va_list ap;

12 va_start(ap, fmt);

13 err_doit(1, LOG_INFO, fmt, ap);

14 va_end(ap);

15 return;

16 }

17 /* Фатальная ошибка, связанная с системным вызовом.

18 Выводим сообщение и завершаем работу */

19 void

20 err_sys(const char *fmt)

21 {

22 va_list ap;

23 va_start(ap, fmt);

24 err_doit(1, LOG_ERR, fmt, ap);

25 va_end(ap);

26 exit(1);

27 }

28 /* Фатальная ошибка, связанная с системным вызовом.

29 Выводим сообщение, сохраняем дамп памяти процесса и заканчиваем работу */

30 void

31 err_dump(const char *fmt, ... )

32 {

33 va_list ар;

34 va_start(ap, fmt);

35 err_doit(1, LOG_ERR, fmt, ap);

36 va_end(ap);

37 abort; /* сохраняем дамп памяти и заканчиваем работу */

38 exit(1);

39 }

40 /* Нефатальная ошибка, не относящаяся к системному вызову.

41 Выводим сообщение и возвращаем управление */

42 void

43 err_msg(const char *fmt , ...)

44 {

45 va_list ap;

46 va_start(ap, fmt);

47 err_doit(0, LOG_INFO, fmt, ap);

48 va_end(ap);

49 return;

50 }

51 /* Фатальная ошибка, не относящаяся к системному вызову.

52 Выводим сообщение и заканчиваем работу. */

53 void

54 err_quit(const char *fmt, ...)

55 {

56 va_list ap;

57 va_start(ap, fmt);

58 err_doit(0, LOG_ERR, fmt, ap);

59 va_end(ap);

60 exit(1);

61 }

62 /* Выводим сообщение и возвращаем управление.

63 Вызывающий процесс задает "errnoflag" и "level" */

64 static void

65 err_doit(int errnoflag, int level, const char *fmt, va_list ap)

66 {

67 int errno_save, n;

68 char buf[MAXLINE + 1];

69 errno_save = errno; /* значение может понадобиться вызвавшему

процессу */

70 #ifdef HAVE_VSNPRINTF

71 vsnprintf(buf, MAXLINE, fmt, ap); /* защищенный вариант */

72 #else

73 vsprintf(buf, fmt, ap); /* незащищенный вариант */

74 #endif

75 n = strlen(buf);

76 if (errnoflag)

77 snprintf(buf + n, MAXLINE - n, ": %s", strerror(errno_save));

78 strcat(buf, "\n");

  • Читать дальше
  • 1
  • ...
  • 478
  • 479
  • 480
  • 481
  • 482
  • 483
  • 484
  • 485
  • 486
  • 487
  • 488
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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