0

dupLinux では、コマンド familyを使用してファイル記述子を複製できます。

システム コールを使用して、ファイル記述子の重複数を取得する方法はありますか?

4

1 に答える 1

1

fstat()開いている記述子で使用してみてください。このシステムコールは を返しますstruct statst_dev重複した記述子は、同じデバイス (およびst_inoのメンバー)上の同じ i ノードを参照しますstruct stat

開いているすべての記述子に対して loop を実行すると (ループを0toから安全に実行できますgetrlimit(RLIMIT_NOFILE, ...)-閉じた記述子の場合は -1 が返されます)、一意であるかどうstat()かをチェックし、重複を見つけます。st_devst_ino

アップデート:

Linux でコマンドを詳しく調べたところ、フォルダー (すべてのプロセスまたは「興味深い」プロセスによって開かれたファイルのビルドの概要) をfuser見ると、複数のプロセスに関するこの情報を見つけることができるようです。/proc/PIF/fd/

FreeBSD では、同様のトリックがfstatコマンドによって (マウントされた/procファイルシステムなしで) 行われますが、このアプローチはおそらく Linux には適用されません (詳しく調べていません)。

于 2014-12-23T20:54:00.323 に答える