Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 Aug 2006 17:05:39 -0400
From:      Mike Meyer <mwm-keyword-freebsdhackers2.e313df@mired.org>
To:        "Reko Turja" <reko.turja@liukuma.net>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Aqcuiring full path to running process from outside the kernel
Message-ID:  <17640.52899.432083.511555@bhuda.mired.org>
In-Reply-To: <017601c6c486$6477c370$0a0aa8c0@rivendell>
References:  <017601c6c486$6477c370$0a0aa8c0@rivendell>

next in thread | previous in thread | raw e-mail | index | archive | help
In <017601c6c486$6477c370$0a0aa8c0@rivendell>, Reko Turja <reko.turja@liukuma.net> typed:
> I've been playing with Open Watcom for a bit in FreeBSD and for a 
> while there's been one stumblim block for further advancement. Watcom 
> uses a method for storing program messages etc. where these messages 
> are stored as a "resource file" inside the executable itself. As the 
> commands are usually invoked without the canonical path, the tools 
> cannot find the resource portion stored inside.
> 
> This far I've been looking for some solutions from which none seem to 
> work too well. vn_fullpath (9) is running only inside kernel I think, 
> and with the approach using kvm_openfiles and kvm_getprocs I can only 
> get the command without the path (there are vnode etc. structures 
> inside the kinfo_proc structure, but those seem to be unavailable from 
> user space). Of course /proc might help in here, but I rather kept the 
> code compilable on very vanilla system.
> 
> Any pointers on how to proceed would be welcome.

In general, what you're asking can't be done on Unix.  The vn_fullpath
man page notes this by pointing out that it makes a "best effort", and
giving a list of reasons why it isn't reliable. Many of those apply in
your case as well.

However, you can also make a best effort. Check argv[0] to see if you
have an absolute path. If not, do what the shell would do to find the
executable - look for it on $PATH. Once you've found it, call
realpath(3) to canonicalize the path.

	<mike
-- 
Mike Meyer <mwm@mired.org>		http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?17640.52899.432083.511555>