Re: Path to executable of current process?
- From: Peter Jeremy <peterjeremy@xxxxxxxxxxxxxxxx>
- Date: Fri, 20 Jul 2007 21:12:09 +1000
On 2007-Jul-19 22:00:23 -0400, Michael B Allen <ioplex@xxxxxxxxx> 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@xxxxxxxxx> wrote:
After more digging I see sysctl seems to be the way to do this but can I
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] = KERN_PROC_PID;This should be KERN_PROC_ARGS
len = sizeof(struct kinfo_proc);
if (sysctl(mib, 4, &ki_proc, &len, NULL, 0) == -1)
And the buffer argument should be char[], not struct kinfo_proc.
--
Peter Jeremy
Attachment:
pgpLKlFaq58jn.pgp
Description: PGP signature
- References:
- Path to executable of current process?
- From: Michael B Allen
- Re: Path to executable of current process?
- From: Michael B Allen
- Path to executable of current process?
- Prev by Date: Re: FreeBSD 6.2-STABLE && apache 2.2.4 = bad performance. Help!
- Next by Date: Re: Path to executable of current process?
- Previous by thread: Re: Path to executable of current process?
- Next by thread: Re: Path to executable of current process?
- Index(es):
Relevant Pages
|
|