Tôi chạy vào tràn số nguyên bằng cách sử dụng tiêu chuẩn ftell và fseek tùy chọn bên trong của G ++, nhưng tôi đoán tôi đã nhầm lẫn vì nó có vẻ rằng ftell64 và fseek64 không khả dụng. Tôi đã tìm kiếm và nhiều trang web dường như tham khảo bằng cách sử dụng lseek với các kiểu dữ liệu off64_t, nhưng tôi không tìm thấy bất kỳ ví dụ nào tham chiếu đến một cái gì đó bằng fseek. Ngay bây giờ các tệp mà tôi đang đọc là tệp 16GB + CSV với kỳ vọng ít nhất gấp đôi.Tìm kiếm và đọc các tập tin lớn trong một Linux ứng dụng C++
Không có bất kỳ thư viện bên ngoài nào là phương pháp đơn giản nhất để đạt được cấu trúc tương tự như với cặp fseek/ftell? Ứng dụng của tôi hiện đang hoạt động bằng cách sử dụng thư viện chuẩn GCC/G ++ cho 4.x.
Vì vậy, tôi đã làm theo hướng dẫn của bạn và mọi thứ đều đang biên soạn tệp. Nhưng tôi dường như vẫn đang bị tràn. Làm thế nào bạn sẽ sử dụng tham số O_LARGEFILE với fopen64? –
Nếu bạn biên dịch với -D_FILE_OFFSET_BITS = 64, O_LARGEFILE được cung cấp tự động. Đây không phải là cờ chuẩn; nó được sử dụng trên Linux để theo dõi xem tệp đã được mở bằng giao diện tệp lớn hay chưa. – mark4o
Bạn đã đặt câu hỏi là C++, bạn đang sử dụng/trộn các hoạt động tệp C với luồng C++ hay bạn chỉ sử dụng API C? Ngoài ra, bạn có một số mã thử nghiệm để tái tạo hành vi không? Đó là tối quan trọng mà bạn sử dụng các loại chính xác đối phó với độ dài/offsets. – nos