3

私は最近、この質問に対する答えに反対票を投じました(これは私を少しだけ悩ませました:)) 。その人は、私が「なぜ中間ファイルの作成を避けるのか」と考え始めた反対票についての説明を提供しませんでした。特にPythonのように、ファイルIOが笑えるほど簡単な言語では。

それは悪い考えだというコンセンサスがあったようですが、実際には中間ファイルが定期的に使用されていることは知っています。私は非常に尊敬されている研究会社で働いていました(この会社なしではSOは存在しなかったとしましょう)。そこでは、プログラムが出力としてファイルを生成すると想定されていました。これを行ったのは、プログラムが実際にスタンドアロンプ​​ログラムに値する場合、デバッグ可能な出力と、さらに下流の出力でエラーが見つかった場合に後で調べることができるプロセス間でその出力を渡す何らかの方法が必要になるためです。

中間ファイルを使用することは(上記の質問のような場合)悪い習慣と見なされますか?なんで?

4

3 に答える 3

2

マルチスレッドの場合、中間ファイルに関する1つの問題が発生します。

クライアントC1とC2がサーバープロセスS(別々のプロセス、使用されているスレッド、またはその他の同時実行システムに分岐している場合とそうでない場合があります)によって同時に処理される場合、両方が同じ中間ファイルを作成しようとすると、奇妙な問題が発生する可能性があります。

Unixの哲学の1つは、すべてのプログラムがフィルターとして機能する必要があるということですが、これは必ずしもディスク上にファイルを作成することを意味するわけではなく、中間ファイルを使用すると、扱いにくい動作につながると思います。また、ディスクを最後の手段として扱い、コンピュータの電源を切った後に利用できるはずのデータの保存/取得にのみ使用する必要があります。また、プログラムが読み取り専用メディアで実行できるように注意する必要もあります。

于 2010-11-24T13:18:29.277 に答える
1

さて、ファイルを使用するときにいくつかの問題があります。特に、ファイルへのアクセスまたは作成中に予期しない障害が発生する可能性があります。以下は私が個人的に経験したすべての問題です。

1)ファイルの場所がリモートマシン上にあり、ネットワークがダウンしています。(NFSがマウントされています)。
2)ファイルの作成中に十分な空き容量がありません。
3)プロセスの合間に、ユーザーはCtrl-Cを押してプロセスをキャンセルし、ファイルは削除されません。
4)ファイルがNFSにマウントされており、ネットワークが低速です。
5)ファイルが作成されたフォルダはソフトリンクであり、元のリンクは削除されました。

しかし、bashで作業している間はほとんどオプションがないため、ファイルを使用する必要があります。しかし、C、C ++では、ディスクアクセスを最後の手段と見なす必要があると思います。それがユーザーと通信する唯一の方法である場合、出力としてファイルを生成するプログラムは問題ありません。ただし、少なくとも中程度の節約のために、ディスクファイルの使用を最小限に抑える必要があります。

于 2010-11-24T13:43:11.000 に答える
0

一時ファイルを適切に作成する場合(プラットフォーム固有の「一時」フラグを設定すると、緊急の必要がない場合はキャッシュをディスクにフラッシュしないことを意味します)、タスクで必要な場合は完全に適切です。

ITには、正当な理由があるのに使用できないものはほとんどありません。:-)

于 2010-11-24T13:28:40.597 に答える