[Haskell-cafe] How to get a file path to the program invoked?

Richard O'Keefe ok at cs.otago.ac.nz
Mon Dec 5 00:54:15 CET 2011


On 4/12/2011, at 7:32 PM, wren ng thornton wrote:
> Part of the problem is that, as Alexey says, the first element of argv is just whatever is passed to exec, which is not guaranteed to be a complete path, a canonical path, or any other specific thing we'd desire. It's not at all straightforward to determine the actual location of the executable, especially not in a platform-independent manner. argv[0] can't be trusted, scanning through $PATH isn't guaranteed to find it (and even if you find something of the right name, it's not guaranteed to be the correct executable), etc etc.

In particular, with posix_spawnp(), the $PATH that is used to find the executable
and the $PATH in the environment that the executable starts with can be two different things.




More information about the Haskell-Cafe mailing list