問題タブ [fstat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 読み取り後の fstat の動作
多くの場合、 openへの呼び出しからファイル記述子が割り当てられた直後にfstat呼び出しが実行されるのを見てきました。
最初にreadの呼び出しを既に実行している場合、fstat の動作は異なりますか?
そして、「動作が異なる」とは、つまり、fstat の戻り値、またはそのシナリオでの「struct stat」バッファー出力の何かが異なることを意味します。
stat_log のサイズに関連するメンバーのいずれかが、まだ読み取られていないファイルのサイズを表しているか?
ファイルの最後まで読み取った場合、その後 fstat を呼び出すと失敗しますか? (fstat は -1 を返します)
この fstat ドキュメントは、ファイル記述子がまだ読み取られていないファイルを参照する必要があることを示していないようです。そうでないことを示す何かを見つけましたか?
c++ - mmapを使用してファイルを共有しているプロセスの数を取得するには?
特定のファイルにマップされているプロセスの数を取得する方法はありますか?
本当は全プロセスダウン時に複数プロセスで共有しているファイルを削除したいのですが。それを行う方法はありますか?
fstat
の数を取得するために関数呼び出しを試みましhard links
たが、マッピング後にファイルを閉じているためstat.st_nlink
、常に0
です。
c - fstat() と stat() を使用する利点は何ですか?
既知のファイル記述子を持つ開いているファイルがある場合、 と を使用する利点は何fstat()
ですかstat()
? なぜ機能が1つしかないのですか?
c++ - fstream がファイルかディレクトリかを確認する
C++ fstream を使用して構成ファイルを読み取ります。
現在、ディレクトリのパスを渡すと、これは黙って無視されます。たとえば、ディレクトリmy_file.good()
であっても true を返します。my_filename
これは私のプログラムにとって意図しない入力であるため、チェックして例外をスローします。
開いたばかりの fstream が通常のファイル、ディレクトリ、またはストリームであるかどうかを確認するにはどうすればよいですか?
私はどちらかへの方法を見つけることができないようです:
- 指定された ifstream からファイル記述子を取得します。
- 他のメカニズムを使用して、ifstream でこの情報を見つけてください。
いくつかのフォーラム ディスカッションでは、これは OS に依存するため、どちらも不可能であり、したがって fstream C++ 標準の一部になることはできないことが示唆されました。
私が考えることができる唯一の代替手段は、コードを書き直して ifstream を完全に取り除き、ファイル記述子 ( *fp
)の C メソッドに頼ることfstat()
です。
私はfstreamの方が好きです。したがって、私の質問です。
c - fstat() は 0 を返し、ファイル サイズは 0、errno は 11 です。
私は自分のコードで次のことを試みています:-
そして、私が得ている出力は次のとおりです:-
サイズが 0 でエラー番号が 11 の理由は何ですか?? ファイルのサイズを取得する他の方法はありますか??
注:Netdev->queue_fd[class_id]
これはファイル記述子です。n_bytes の値は、さまざまな呼び出しで {41,1514,66,..} の間で変化しています。(常に 0 より大きい)
ありがとう
c - stat()、fstat()、lstat()、および fopen(); TOCTOU で保護されたシステムに依存しないコードの書き方
私は数週間、システムに依存しない必要がある 20 年のコードを更新するという問題に対処してきました (Linux と Windows の両方で動作します)。これには、Time-of-Check、Time-of-Use (TOCTOU) の問題が含まれます。ここにスレッドを立てましたが、あまりうまくいきませんでした。しばらく反芻し、問題を深く調べた後、私の質問が少しよく理解できたと思います。もう少し上手に聞いてもいいのかな…
私が読んだことから、コードはファイルが存在するかどうかを確認し、アクセス可能であればファイルを開き、いくつかの操作を行い、最後にファイルを閉じる必要があります。これを行う最善の方法は、 へlstat()
の呼び出し、 へfopen()
の呼び出し、fstat()
(TOCTOU を除外するための) への呼び出し、そして操作とファイルのクローズです。
ただし、相互互換性のために使用すべきではないのとほぼ同じように、システムにとらわれないプログラムでの使用を除外し、C標準で定義されているのではなく、POSIXで定義されているlstat()
と信じるようになりました。これをどのように実装しますか?fstat()
open()
私の最初の投稿を見ると、20 年前の開発者が C プリプロセッサを使用して相互互換性のある部分にコードを切り分けていたことがわかりますが、それを行ったとしても、何を置き換えるlstat()
かfstat()
(彼らのWindows の対応物)。
編集: この投稿に短縮コードを追加しました。不明な点がある場合は、元の投稿に移動してください
c - Cのlstat fstatとstatの違い
ディレクトリ、通常のファイル、およびシンボリックリンクのファイルシステムを検索するために、Cで学校の課題を書いています。今のlstat
ところ、アイテムに関する情報を取得するために使用します。
lstat
fstat
では、とstat
システム コールの違いは何ですか?