dup
Linux では、コマンド familyを使用してファイル記述子を複製できます。
システム コールを使用して、ファイル記述子の重複数を取得する方法はありますか?
dup
Linux では、コマンド familyを使用してファイル記述子を複製できます。
システム コールを使用して、ファイル記述子の重複数を取得する方法はありますか?
fstat()
開いている記述子で使用してみてください。このシステムコールは を返しますstruct stat
。st_dev
重複した記述子は、同じデバイス (およびst_ino
のメンバー)上の同じ i ノードを参照しますstruct stat
。
開いているすべての記述子に対して loop を実行すると (ループを0
toから安全に実行できますgetrlimit(RLIMIT_NOFILE, ...)
-閉じた記述子の場合は -1 が返されます)、一意であるかどうstat()
かをチェックし、重複を見つけます。st_dev
st_ino
アップデート:
Linux でコマンドを詳しく調べたところ、フォルダー (すべてのプロセスまたは「興味深い」プロセスによって開かれたファイルのビルドの概要) をfuser
見ると、複数のプロセスに関するこの情報を見つけることができるようです。/proc/PIF/fd/
FreeBSD では、同様のトリックがfstat
コマンドによって (マウントされた/proc
ファイルシステムなしで) 行われますが、このアプローチはおそらく Linux には適用されません (詳しく調べていません)。