_read(..) и ошибка EBADF
_lseek(descriptor,0,0);
int len(0);
int i = _read(descriptor,&len,1);
из MSDN
трассировка функции показывает передачу ошибки EBADF
Объясните, пожалуйста, в чем заключается эта ошибка? Функция _write(descriptor,"test",4) производит запись в файл без проблем (т.е. он открыт и дескриптор указан верно)
Что может вызывать EBADF?
трассировка функции показывает передачу ошибки EBADF
Объясните, пожалуйста, в чем заключается эта ошибка? Функция _write(descriptor,"test",4) производит запись в файл без проблем (т.е. он открыт и дескриптор указан верно)
Что может вызывать EBADF?
Ну так, функция _write пишет без проблем потому, быть может, что ты открыл файл для записи:), дескриптор создан для записи в файл. Чтобы читать из файла, передавай вторым параметром в _open _O_RDWR.
P.S. Вообще, очень советую использовать в таких случаях именованные константы, даже если ошибка в данном случае и не в этом.
почему? <io.h> включен
_open(fd, _O_RDWR) <=> _open(fd, 2)
вот только кто объяснит, почему?!
_open(fd, _O_RDWR) <=> _open(fd, 2)
вот только кто объяснит, почему?!
во-первых что почему? "<=>" это что? меньше равно или больше? пользуйся define'ами так нагляднее. если описан параметр функции как _O_RDWR, так зачем тебе двойки всякие?
_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 вообще нет.