Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SOS срочно!!! Код программы 
:(
    Опции темы
DimonNew
Дата 15.5.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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)


Заранее благодарю за помощь.   
PM MAIL   Вверх
_hunter
Дата 15.5.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



что ты понимаеш под "помогите разобраться в коде"? 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
DimonNew
Дата 15.5.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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)

Задание у меня такое для защиты лабы. Студент все таки ) 
PM MAIL   Вверх
Doc_d0s
Дата 15.5.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 15.12.2004
Где: в кресле

Репутация: 2
Всего: 3



а ты спроси кто прогу писал пусть расскажет, а конкретнее что непонятно!? 
--------------------
Админ- это вождь Apache'й :)
PM MAIL ICQ   Вверх
DimonNew
Дата 15.5.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 15.5.2006

Репутация: нет
Всего: нет



Если те челы умерли пойти души вызвать??? Это функция Perror, которая использует библ errno 
PM MAIL   Вверх
Wowa
Дата 15.5.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Модератор: Название темы должно отражать ее суть! 
PM WWW   Вверх
Earnest
Дата 15.5.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Эта функция выводит сообщение об ошибке либо в стандартный поток ошибок, либо в таинственный fp, попыткой добраться до которого занимается вся первая часть if. Насколько я понимаю, fp - это просто дубликат strerr (т.е. еще одно подключение к тому же потоку).
А что уж она пытается проверить с помощью функций __builtin_expect и _IO_fwide остается только гадать... Если нашел код perror, то найди и эти. 


--------------------
...
PM   Вверх
nikitao
Дата 16.5.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



ffldove, DimonNew, используйте теги
 code=cpp
/code
 smile   

Это сообщение отредактировал(а) nikitao - 16.5.2006, 16:28


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
ffldove
Дата 16.5.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.5.2006

Репутация: -1
Всего: нет



а где именно 
PM MAIL   Вверх
_hunter
Дата 16.5.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



перед и после кода... 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Earnest
Дата 16.5.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Модератор: Пожалуйста, один топик - один вопрос.

ffldove, создай свою тему!!!
 


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0900 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.