_open() выдает ошибку E2BIG - Argument list too long
От: Mechanic55  
Дата: 03.09.07 14:04
Оценка:
Всем привет!

Я использую функцию _open() для того чтобы открыть файл размером более 2 Гб...
int fh = _open(Path, _O_RDONLY);

Дело в том, что раньше я использовал fopen() и, вообще, работал не с handle (file descriptor), а с FILE объектами. С fopen() не было проблем с открытием больших файлов, а _open() не хочет. Выдает ошибку E2BIG — Argument list too long.

Как обойти это? Мне именно с file descriptor нужно открыть файл, т.к. хочу использовать функции _lseeki64() и _telli64(). В них курсор можно задать типом int64, а в fseek() и в ftell() используется long, а его не хватает чтобы пробежаться по большому файлу. Вот, ведь замкнутый круг. Функции для работы с большими файлами, а использовать их никак не получается...

Такой еще вопрос. Я не пробывал _sopen_s() потому что компилирую на VS7, а _sopen_s() только в VS2005 появляется. В принципе могу использовать и VS2005, поможет ли только _sopen_s() в моем случае?

Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.