Date: Wed, 21 Jul 2004 10:12:20 -0500 From: Dan Nelson <dnelson@allantgroup.com> To: Joe Marcus Clarke <marcus@marcuscom.com> Cc: hackers@freebsd.org Subject: Re: Getting a fully-qualified path from a PID Message-ID: <20040721151220.GB42575@dan.emsphone.com> In-Reply-To: <1090378066.90026.105.camel@shumai.marcuscom.com> References: <1090378066.90026.105.camel@shumai.marcuscom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
In the last episode (Jul 20), Joe Marcus Clarke said: > What is the canonical way for a userland application to get the > fully-qualified path of an executable from its running PID? I know I > can do a readlink(2) on /proc/pid/file, but procfs is deprecated on > 5.X, correct? Is there a more appropriate way to do this? Thanks. realpath(argv[0]) works for commands not run from $PATH. Commands found through a PATH earch will just have the basename in argv[0] so you would have to check each PATH element until you found it. Note that /proc/pid/file won't work if vn_fullpath() fails (say the orignal file has been unlinked, or the filename has expired from the kernel's cache). If you are examining another process, you can use the kvm_getargv() and kvm_getenvv() functions to fetch argv[0] and PATH out of the target process. -- Dan Nelson dnelson@allantgroup.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040721151220.GB42575>