[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[OT] Can't find on Google: How can I determine path to binary in gcc?



What is the canonical way to determine *my* application's truepath in 
Posix?  Bash's $0 seems to do it, but after reading the sourcecode for 
coreutils all I can see is:

(1) If argv[0] starts with a "/", use that.
(2) If not, search the path for argv[0].  If found, use that.
(3) Otherwise, use "current-dir/argv[0]".

In Windows you can use GetModuleFileName to get the process or shared 
library filename: is there a Posix service like that?

Also:

To resolve symlinks into the "real" path, the manpage for realpath says 
"BUGS: don't use this function."  So far I'm shelling to 'readlink -f', 
as 'man 2 readlink' doesn't provide the '-f' option, and I'd have to 
duplicate all the code of 'readlink.c' (i.e., the recursive calls to 
readlink() and lib/canonicalize.c).

What's the 'right' way to do that in C?  Provide all my own code?  Or is 
there a POSIX service?



Reply to: