Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

_read(..) и ошибка EBADF

6.8K
17 февраля 2007 года
Аццкий программер
91 / / 27.11.2006
При использовании функции _read(..) передается значение -1 (т.е. нефига не читается)
Цитата:
descriptor = _open(FileName,1);

_lseek(descriptor,0,0);
int len(0);
int i = _read(descriptor,&len,1);


из MSDN

Цитата:
the file is not open for reading, or the file is locked, the function returns –1 and sets errno to EBADF


трассировка функции показывает передачу ошибки EBADF
Объясните, пожалуйста, в чем заключается эта ошибка? Функция _write(descriptor,"test",4) производит запись в файл без проблем (т.е. он открыт и дескриптор указан верно)
Что может вызывать EBADF?

63
17 февраля 2007 года
Zorkus
2.6K / / 04.11.2006
При использовании функции _read(..) передается значение -1 (т.е. нефига не читается)
трассировка функции показывает передачу ошибки EBADF
Объясните, пожалуйста, в чем заключается эта ошибка? Функция _write(descriptor,"test",4) производит запись в файл без проблем (т.е. он открыт и дескриптор указан верно)
Что может вызывать EBADF?


Ну так, функция _write пишет без проблем потому, быть может, что ты открыл файл для записи:), дескриптор создан для записи в файл. Чтобы читать из файла, передавай вторым параметром в _open _O_RDWR.
P.S. Вообще, очень советую использовать в таких случаях именованные константы, даже если ошибка в данном случае и не в этом.

6.8K
17 февраля 2007 года
Аццкий программер
91 / / 27.11.2006
по поводу _O_RDWR у меня тоже есть вопрос =)
Цитата:
error C2065: '_O_RDWR' : undeclared identifier


почему? <io.h> включен

6.8K
17 февраля 2007 года
Аццкий программер
91 / / 27.11.2006
сам разобрался методом Научного Тыка =)
_open(fd, _O_RDWR) <=> _open(fd, 2)

вот только кто объяснит, почему?!
8.8K
18 февраля 2007 года
The_Ice
109 / / 04.04.2006
сам разобрался методом Научного Тыка =)
_open(fd, _O_RDWR) <=> _open(fd, 2)

вот только кто объяснит, почему?!



во-первых что почему? "<=>" это что? меньше равно или больше? пользуйся define'ами так нагляднее. если описан параметр функции как _O_RDWR, так зачем тебе двойки всякие?

257
18 февраля 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=Аццкий программер]сам разобрался методом Научного Тыка =)
_open(fd, _O_RDWR) <=> _open(fd, 2)[/quote]
а зачем методом "научного тыка"? в файле fcntl.h так и написано
[quote=]#define _O_RDWR 0x0002 /* open for reading and writing */
[/quote]
а вот это
[quote=Аццкий программер]по поводу _O_RDWR у меня тоже есть вопрос =)
[quote=]error C2065: '_O_RDWR' : undeclared identifier[/quote]
почему? <io.h> включен[/quote]
потому что надо подключить fcntl.h, так как в io.h _O_RDWR вообще нет.
6.8K
18 февраля 2007 года
Аццкий программер
91 / / 27.11.2006
ясно, спс
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог