Re: Path to executable of current process?

看板FB_hackers作者時間18年前 (2007/07/24 11:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
--h31gzZEtNLTqOjlF Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2007-Jul-19 22:00:23 -0400, Michael B Allen <ioplex@gmail.com> wrote: >Well I figured out how to get kvm_getargv working. Unfortunately it >seems only root can call kvm_open so the faulting process can't >backtrace unless it so happens to be running as root (which it's not). > >Is there any way to get argv[0] for the current process without being root? I suggest you have a look at the source to ps - it does not run with elevated privileges. Note that argv[0] is not necessarily a full pathname - it is whatever the program was invoked with. Even if it _is_ a full pathname, there is no guarantee that it points to the same object - the executable may be in a chroot environment or that pathname may have been replaced. The only guaranteed way to access the executable associated with a running process is via procfs. As you point out earlier, this is not mounted by default on FreeBSD because none of the base system utilities need it (apart from 'ps -e') - you will need to arrange for it to be mounted. On 2007-Jul-19 23:23:45 -0400, Michael B Allen <ioplex@gmail.com> wrote: >After more digging I see sysctl seems to be the way to do this but can I= =20 >get the full path to the executable form kinfo_proc? > >How does ps do this? It uses kvm_getargv(3). If you want to do it directly via sysctl(2), I suggest you examine /usr/src/lib/libkvm/kvm_proc.c. > mib[2] =3D KERN_PROC_PID; This should be KERN_PROC_ARGS > len =3D sizeof(struct kinfo_proc); > if (sysctl(mib, 4, &ki_proc, &len, NULL, 0) =3D=3D -1) And the buffer argument should be char[], not struct kinfo_proc. --=20 Peter Jeremy --h31gzZEtNLTqOjlF Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (FreeBSD) iD8DBQFGoJiJ/opHv/APuIcRAtcpAJ9/zq/z9vLxlJgeM5Q9w1ck7KSdsACgqoqP fGvVxElsOLM2YYC3/SHEH/0= =7xI6 -----END PGP SIGNATURE----- --h31gzZEtNLTqOjlF--
文章代碼(AID): #16fMop00 (FB_hackers)
文章代碼(AID): #16fMop00 (FB_hackers)