Everything I\'ve seen says to use lsof -p, but I\'m looking for something that doesn\'t require a fork/exec.
lsof -p
For example on Linux one can simply walk
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.
PROC_PIDLISTFDS
proc_pidfdinfo
PROC_PIDFDVNODEPATHINFO