How to get filename of an open file descriptor

Robert Watson rwatson at FreeBSD.org
Mon Nov 12 14:07:49 PST 2007


On Mon, 12 Nov 2007, Yuri wrote:

> I am looking for functionality similar to Linux's /proc/<PID>/fd/<FD>. I 
> need to know what is the file name of an open file descriptor.
>
> /proc/<PID>/fd is missing on FreeBSD.
>
> There's something called 'fdescfs'. In /dev/fd/ it shows the list of file 
> descriptors. But they don't seem to be symbolic links to open files. And 
> also it only shows FDs of the current process.
>
> So why there's no /proc/<PID>/fd in FreeBSD? And how do I work around this? 
> Or should I just invest time and write a kernel patch implementing 
> /proc/<PID>/fd/?

You can give these patches a try:

   http://www.watson.org/~robert/freebsd/20071112-procstat.tgz

They reflect a work-in-progress procstat(1) tool, which inspects process state 
in various ways.  They are developed against 8-CURRENT, but likely still apply 
fairly easily to 7-STABLE.  They suffer various deficiencies, such as relying 
on the name cache in-kernel to generate file paths for mapped files and open 
file descriptors, so don't currently work with devfs nodes (for example). 
However, they may do what you need.  Any feedback would be most welcome.

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the freebsd-hackers mailing list