На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> FILE * чтение,запись. Многопоточность. , FILE * чтение,запись. Многопоточность.
    Цитата Qraizer @
    В третий раз: почему не ferror()?

    Сделал так:
    ExpandedWrap disabled
          int err = 0;
          int err2 = 0;
          do
          {
              DWORD Len = fread(buffer, sizeof(BYTE), buf, in);
              
              fwrite(buffer, sizeof(BYTE), Len, out);
       
              err = ferror (in);
              err2 = ferror (out);
              if (err != 0)
                  printf("R: %s\r\n", strerror(errno));
              if (err2 != 0)
                  printf("W: %s\r\n", strerror(errno));
       
          }while(!feof(in));


    Выдаёт "W: Bad file descriptor"
      Цитата Qraizer @
      Добавлено
      Цитата Sherman @
      ExpandedWrap disabled
                if(Len==0) break;
      В третий раз: почему не ferror()?

      Это очень просто.
      Если файл завершился или произошла ошибка - выход из
      цикла чтения. Поскольку запись в этом случае бессмысленна.
      А вот потом можно производить тест на ошибки.


      Поэтому это неверно:
      Добавлено
      Цитата Sherman @
      Цитата Qraizer @
      В третий раз: почему не ferror()?

      Сделал так:
      ExpandedWrap disabled
            int err = 0;
            int err2 = 0;
            do
            {
                DWORD Len = fread(buffer, sizeof(BYTE), buf, in);
                
                fwrite(buffer, sizeof(BYTE), Len, out);
         
                err = ferror (in);
                err2 = ferror (out);
                if (err != 0)
                    printf("R: %s\r\n", strerror(errno));
                if (err2 != 0)
                    printf("W: %s\r\n", strerror(errno));
         
            }while(!feof(in));


      Выдаёт "W: Bad file descriptor"


      Если Len равно 0 всё равно надо выходить из цикла.
      И потом разбираться с ошибками.
      Сообщение отредактировано: ЫукпШ -
        Как можно реализовать похожую процедуру копирования файла на WIN API?
          Цитата Sherman @
          Как можно реализовать похожую процедуру копирования файла на WIN API?
          А зачем? Очередной раз говорю: проверь, что ты используешь многопоточную стандартную библиотеку. Тот факт, что код работает (хотя и написан не без изъянов) у всех, кроме тебя, ни на что не намекает? Совершенно неважно, каков у тебя движок потоков, хоть Плюсовый, хоть никсовый, хоть виндовый; если ты во многопоточном окружении используешь однопоточную CRT, она будет глючить, бажить и падать. Выхода два: первый уже озвучен, второй – вообще отказаться от любых стандартных функций языка.
          Сообщение отредактировано: Qraizer -
            Цитата Qraizer @
            Очередной раз говорю: проверь, что ты используешь многопоточную стандартную библиотеку.

            Да,но как это проверить?
              Цитата Sherman @
              Да,но как это проверить?
              Вот с этим не помогу. Нужен спец по МинГВе.
                Цитата Qraizer @
                Вот с этим не помогу. Нужен спец по МинГВе.

                Понял.В любом случае,спасибо за помощь.
                  Цитата Sherman @
                  Цитата Qraizer @
                  Очередной раз говорю: проверь, что ты используешь многопоточную стандартную библиотеку.

                  Да,но как это проверить?

                  Так вот же:
                  командная строка
                  Используем поисковую систему, например www.ya.ru, пишем в строку "-D_REENTRANT".
                  Смотрим, что получится.
                  Сообщение отредактировано: ЫукпШ -
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0302 ]   [ 17 queries used ]   [ Generated: 19.03.24, 04:10 GMT ]