C言語のfopenで同時に開けるファイル数の上限を変える方法を教えてください。
3000個程度を超えると開けなくなりました。(戻り値がNULL)
自分としては512や2048以上のファイルを開けたことが不思議だったのですが・・・
以下にOSのバージョンなどを書きます
また、fopenで開けるファイル数の上限はどのようにして見ることができますか。(書かれている変数がありますか?
あともうひとつ、
100万程度の大量のファイルを同時に開ける言語はありますか。
(OSの限度などは抜きにして。)
よろしくお願いします。
----
OSはDebian 4.0
コンパイラはgcc 4.1.2
/proc/sys/fs/file-max
による上限は数十万でした。
No.3ベストアンサー
- 回答日時:
>質問の仕方で誤解を与えてしまったようですが、
>最大数が知りたいのです。
「処理系に依存するので不明」が答え。
ある処理系ではfopenが返すFILEポインタの実体が
FILE __iob[FOPEN_MAX];
と定義されてて「どう足掻いても同時にはFOPEN_MAX個しか開けない」って制限があったりする(つまり、配列がFOPEN_MAX個しか無いから、配列の全要素を使い切ったら終り)
ある処理系では、動的にFILEポインタを確保するので、ヒープメモリの上限に達するか、OSのリソースが尽きるまで同時にfopen出来る、と言う仕様になっていたりする。
で、OSにも「1つのプロセスで同時に開けるファイルの上限」があったり無かったりするので、Cのfopenライブラリの上限ではなく、OSの上限に引っ掛かったりもする。
そういう訳で「確実に同時オープン出来る事が保証されている最低の個数としてFOPEN_MAXが定義されている」だけで「本当に同時オープン出来るファイル数の上限は不明」としか言えない。
>あともうひとつ、
>100万程度の大量のファイルを同時に開ける言語はありますか。
>(OSの限度などは抜きにして。)
「OSの限度を抜きにする」と、質問自体が無意味になる。
なぜなら「ライブラリ関数で決められた上限に依存せずに大量のファイルを同時オープンするには、ライブラリ関数を使わず、直接、OSのファイルオープンを行う」と言う方法を取らざるを得ない。
そして、この方法は「直接OSのファイルオープンを行うのなら、言語に依存しない。その言語で、直接OSのファイルオープンを行う方法が用意されてさえ居れば良く、どの言語でも共通の話。依存するのはOSそのものの上限だけ」と言う事になる。
つまり「上限無しの方法を使うと、必然的に、OSそのものの上限に依存する」と言う事。
これは、質問者さんが提示した「OSの限度などは抜きにして」と言う前提に反する。
つまり「OSの限度などは抜きにして、と前提した事そのものが間違い」なのである。
OSの上限を抜きにして語れない話は、OSの上限は抜きにはできない。
そして、結論は「質問自体が無意味」となる。
唯一「OSの上限にさえ依存しない方法」として「記憶媒体に対し、OSを介さずに、直接アクセスする」と言う方法もあるが、それをやるには「OSのファイルシステムがやっている事と同一の事をすべて自前でやる事になる」ので非現実的。なのでこの方法は「無視」して「無かったこと」にする。
No.1
- 回答日時:
stdio.h を #include しておけば, 同時にオープンできるファイル数 (もともとオープンされている 3つの標準ストリームを含む) は
FOPEN_MAX
でわかります.
でも, そんなに大量のファイルを「同時にオープンする」必要ありますか? プログラムの作りがおかしいような気もします.
この回答への補足
回答ありがとうございます。
FOPEN_MAXは同時に開けるファイルの最大数ではなくて
同時に開けることが保障されている最少のファイル数だったと記憶しています。
質問の仕方で誤解を与えてしまったようですが、
最大数が知りたいのです。
ちなみに私の環境の場合FOPEN_MAXは20でした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 7 Media Playerが開かない。ファイルアイコンを右クリックしても「プロパティ」が表示されない。 2 2023/02/05 14:45
- その他(ソフトウェア) Emacsメニューの日本語化について 1 2023/06/16 15:52
- その他(メールソフト・メールサービス) Thunderbird Wordの添付ファイルが開けない 1 2023/06/22 11:20
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- デスクトップパソコン Outlookのデータが勝手に復元された理由は? 1 2022/07/13 15:45
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) ドキュメントに保存していたエクセルのファイルが開きません。 2 2022/12/02 09:38
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- Visual Basic(VBA) 複数ブックの統合について Excel VBA 1 2022/05/13 09:48
- HTML・CSS CSSファイルの日本語コメントが文字化けしてしまう 3 2022/12/26 15:50
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
fopne で失敗する原因
C言語・C++・C#
-
C言語のfopenについて教えてください。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
UTL_FILEにて既存のExcelに追加...
-
ファイルの結合
-
C言語のfopenについて教えてく...
-
Excelマクロでの再読込み方法
-
VBに、Cのincludeのようなもの...
-
FileOpen 関数で既にファイル...
-
[VBScript]ファイルの入出力を...
-
テキストファイルの最終行を削...
-
CSVファイルへの保存の際、デー...
-
mp3のID3タグをVBで編集する方法
-
2つのファイルを比較するC言語...
-
大きいサイズのテキストファイ...
-
std::ifstreamについて
-
ファイルを開かずにカスタムド...
-
COM相互運用機能のON,OFFによる...
-
バッチで118項目のCSVを処理し...
-
外部ファイルを読み込みたいの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
csvファイルを開かずに文字を検...
-
テキストファイルの最終行を削...
-
VBに、Cのincludeのようなもの...
-
SGファイルって何ですか?
-
C言語のfopenについて教えてく...
-
分割コンパイルの#defineについて
-
アプリケーション終了時例外エ...
-
ドラッグアンドドロップでファ...
-
CSVファイルへの保存の際、デー...
-
ASP .NETでファイル選択ダイア...
-
大きいサイズのテキストファイ...
-
Javascript で INI の読み書き
-
グローバル変数のよくない使い...
-
fopenできる上限の変更
-
ハッシュの計算時間について
-
Excelマクロでの再読込み方法
-
UTL_FILEにて既存のExcelに追加...
-
ファイルの結合
おすすめ情報