Windows と Linux の実行モジュールの取得方法

Windows だと GetModuleFileName で現在実行中のファイルのファイル名が取得できる。

Linux だと、おそらく

    char* self = getenv("_");

で取得可能。

ただし、手元の環境(Ubuntu 10.04)では "_" で取得できたが、全ての環境でこれが使用できるかは定かではない。

2011/08/12 追記

例えば以下のような hoge.sh シェルがあった場合:

#!/bin/sh

./fuga

hoge 内で getenv("_") すると、"./hoge.sh" が文字列として取得されてしまい、GetModuleFileName のようにモジュールのファイル名が取得できるとは限らない。