Re: Path to executable of current process?
--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--
討論串 (同標題文章)
完整討論串 (本文為第 4 之 5 篇):