On Tuesday, September 04, 2012 7:10:42 am Sam Varshavchik wrote: > Konstantin Belousov writes: > > > The procfs links, as well as any other user of vn_fullpath(9) function, > > can only translate a vnode to path if namecache contains useful data. > > As such, the facilities are not guaranteed to success all the time. > > > > In case of rmdir(2), UFS explicitely purges the cache for directory which > > contained direntry of the removed directory. I suspect that you have > > your test program binary located in the same directory which was the parent > > of the removed one. > > Correct. Looks like the same thing applies if I try to use sysctl to get > KERN_PROC_PATHNAME. > > I need some reliable way to get a process's executable file's name, as long > as it's meaningful (the executable file hasn't been removed).
There isn't one. What if the file is renamed, or what if it was executed via a symlink that has been removed? What if there are multiple hard links, which one is the "correct" path to return? The namecache bits are a best effort, but if those are purged, the only approach are left with is a brute-force crawl of the filesystem looking for a file whose stat() results match your executable. -- John Baldwin _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"