问题
Everything I've seen says to use lsof -p, but I'm looking for something that doesn't require a fork/exec.
For example on Linux one can simply walk /proc/{pid}/fd.
回答1:
You can use proc_pidinfo with the PROC_PIDLISTFDS option to enumerate the files used by a given process. You can then use proc_pidfdinfo on each file in turn with the PROC_PIDFDVNODEPATHINFO option to get its path.
来源:https://stackoverflow.com/questions/15583563/how-can-i-programmatically-get-the-list-of-open-file-descriptors-for-a-given-pid