Date: Wed, 21 Jul 2004 12:27:13 -0400 From: Joe Marcus Clarke <marcus@marcuscom.com> To: Dan Nelson <dnelson@allantgroup.com> Cc: hackers@freebsd.org Subject: Re: Getting a fully-qualified path from a PID Message-ID: <1090427233.29242.9.camel@shumai.marcuscom.com> In-Reply-To: <20040721151220.GB42575@dan.emsphone.com> References: <1090378066.90026.105.camel@shumai.marcuscom.com> <20040721151220.GB42575@dan.emsphone.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--=-vwkcduZ6DhAn4TGXHxYZ Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2004-07-21 at 11:12, Dan Nelson wrote: > 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. >=20 > 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). >=20 > 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. Okay, I was thinking about that. What I was specifically interested in was processes spawned from $PATH, so realpath isn't going to be much good to me there. I didn't know if there was a better way than getting the environ+argv with kvm, then searching each path element. Thanks for the clarification. Joe --=20 PGP Key : http://www.marcuscom.com/pgp.asc --=-vwkcduZ6DhAn4TGXHxYZ Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (FreeBSD) iD8DBQBA/plhb2iPiv4Uz4cRAsVgAKCXkDIjXKLx3QwGv6xxIFCZulXcRQCfRlRj kS0GJ+63sDGBRnvpPPoIBb0= =36HK -----END PGP SIGNATURE----- --=-vwkcduZ6DhAn4TGXHxYZ--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1090427233.29242.9.camel>