![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| DimonNew |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 15.5.2006 Репутация: нет Всего: нет |
Народ помогите пожалуйста разобраться в коде, искалл литературу ничего не нашел:
#include <errno.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <wchar.h> #include "libioP.h" static void perror_internal (FILE *fp, const char *s, int errnum) { char buf[1024]; const char *colon; const char *errstring; if (s == NULL || *s == '\0') s = colon = ""; else colon = ": "; errstring = __strerror_r (errnum, buf, sizeof buf); if (_IO_fwide (fp, 0) > 0) (void) __fwprintf (fp, L"%s%s%s\n", s, colon, errstring); else (void) fprintf (fp, "%s%s%s\n", s, colon, errstring); } void perror (const char *s) { int errnum = errno; FILE *fp; int fd = -1; if (__builtin_expect (_IO_fwide (stderr, 0) != 0, 1) || (fd = fileno (stderr)) == -1 || (fd = __dup (fd)) == -1 || (fp = fdopen (fd, "w+")) == NULL) { if (__builtin_expect (fd != -1, 0)) __close (fd); /* Use standard error as is. */ perror_internal (stderr, s, errnum); } else { perror_internal (fp, s, errnum); /* Close the stream. */ fclose (fp); } } libc_hidden_def (perror) Заранее благодарю за помощь. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
что ты понимаеш под "помогите разобраться в коде"?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| DimonNew |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 15.5.2006 Репутация: нет Всего: нет |
не могу понять что вытворяеться в этой части
void perror (const char *s) { int errnum = errno; FILE *fp; int fd = -1; if (__builtin_expect (_IO_fwide (stderr, 0) != 0, 1) || (fd = fileno (stderr)) == -1 || (fd = __dup (fd)) == -1 || (fp = fdopen (fd, "w+")) == NULL) { if (__builtin_expect (fd != -1, 0)) __close (fd); /* Use standard error as is. */ perror_internal (stderr, s, errnum); } else { perror_internal (fp, s, errnum); /* Close the stream. */ fclose (fp); } } libc_hidden_def (perror) Задание у меня такое для защиты лабы. Студент все таки ) |
|||
|
||||
| Doc_d0s |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: 2 Всего: 3 |
а ты спроси кто прогу писал пусть расскажет, а конкретнее что непонятно!?
--------------------
Админ- это вождь Apache'й :) |
|||
|
||||
| DimonNew |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 15.5.2006 Репутация: нет Всего: нет |
Если те челы умерли пойти души вызвать??? Это функция Perror, которая использует библ errno
|
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Модератор: Название темы должно отражать ее суть!
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Эта функция выводит сообщение об ошибке либо в стандартный поток ошибок, либо в таинственный fp, попыткой добраться до которого занимается вся первая часть if. Насколько я понимаю, fp - это просто дубликат strerr (т.е. еще одно подключение к тому же потоку).
А что уж она пытается проверить с помощью функций __builtin_expect и _IO_fwide остается только гадать... Если нашел код perror, то найди и эти. -------------------- ... |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
ffldove, DimonNew, используйте теги
code=cpp /code Это сообщение отредактировал(а) nikitao - 16.5.2006, 16:28 -------------------- Жизнь - печальная штука. |
|||
|
||||
| ffldove |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.5.2006 Репутация: -1 Всего: нет |
а где именно
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
перед и после кода...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Модератор: Пожалуйста, один топик - один вопрос.
ffldove, создай свою тему!!! -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |