
教えててください。
OSは、Turbo Linuxです。
現在、大容量のファイルを操作するのに、標準関数で行おうと思っています。
seek関数を使用する場合、先頭からの位置を指定しようとするとint型の位置(符号付4バイト)になるので、容量とすると、1.9GBが限界になると思います。
しかし、扱いたいファイルの容量は、もっと大容量(200GB以上)になるので、「シークできないのでは?」と思いました。
大容量のファイルを扱う方法は、標準関数以外に何かあるのでしょうか?それとも、駆使して操作するのでしょうか?

No.2ベストアンサー
- 回答日時:
fseek関数を使用した場合、seek位置はlong int型で指定しますが、64ビットモードの場合、long intが8バイトの整数となります。
従って、200G以上のサイズが扱えるはずです。64ビットモードでfseekを使用する条件として
1.64ビットモードでコンパイルできるgccであること。(最近のgccはできるはずです。64ビット指定のオプションは調べてませんので、判りません)
2.カーネルが64ビットモードに対応していること
(これも、対応しているLINUXがあるはずですが、詳細について調べたことはないので自信なし)
が必要ですが、最近のLINUXであれば問題ないと思います。(自信なし)
No.1
- 回答日時:
fsetpos()とfgetpos()という標準関数があります。
(stdio.h内)fseek()、ftell()に概念的には同じですが、
ファイルの位置を表すのに、
long intの値ではなくてfpos_tという型を使っています。
使い方は別の資料で調べてください。
これを使えばなんとかなる可能性があります。
ヘッダファイルの中のfpos_tの型を調べて、
longより大きい型(新しくできたlong long intなど)か、
構造体だったら、1.9GB以上に対応しているかもしれません。
ただ、できない可能性もあります。
Linuxの実装については詳しくないので、できなかったらすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「営業秘密の漏洩」について
-
アクセス 壊れた? 「ファイ...
-
公文書のxmlファイルの開き方が...
-
リンクの張り付けかたを教えて...
-
.NETアプリを作ったときの .man...
-
ファイルの閉じるコマンドにつ...
-
jarファイル
-
監視ツールを入れさせられまし...
-
ファイル形式
-
ファイル圧縮形式の変更について
-
VBAでHTMLファイルをPDFにしたい
-
VB6.0でFTPでのファイルの送受信
-
#include <Windows.h>というヘ...
-
コマンドプロンプトで作成日時...
-
JSPが表示されない
-
バッチ処理で追記コピーしたい
-
Latexで図番号だけを「図1.1」...
-
VB6.0 PowerPointの開閉
-
[tex] algorithmic.sty
-
拡張子 .lilについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#include <Windows.h>というヘ...
-
コマンドプロンプトで作成日時...
-
アクセス 壊れた? 「ファイ...
-
binファイルを解凍したいの...
-
.NETアプリを作ったときの .man...
-
リンクの張り付けかたを教えて...
-
Latexで図番号だけを「図1.1」...
-
jarファイル
-
監視ツールを入れさせられまし...
-
自分で作成した重要ファイルを...
-
コマンドプロンプトで、指定し...
-
C言語---ファイルに出力したデ...
-
公文書のxmlファイルの開き方が...
-
「ブルーファイル」と「グリー...
-
HTMLからのBATファイル実行
-
CSVから指定行だけを読み込み
-
ファイルが開かれているかどう...
-
warファイルをEclipseでプロジ...
-
exeファイルの中身を見る方法は...
-
VB6 でSSH接続がしたい
おすすめ情報