LINUX.ORG.RU
Ответ на: комментарий от asgard
getcwd не поможет.

Можно сделать через чтение /proc/pid процесса/exename pid процесса получается getpid

denisv
()
Правильный ответ: все зависит от того, что за система, общего для всех способа не существует. На OS X например вообще невозможно достоверно определить путь к исполняемому файлу (возможно и на FreeBSD тоже, не берусь утверждать).
anonymous
()
Ответ на: комментарий от anonymous
в винде AFAIK нулевой параметр функции main это имя программы с путём. Что является нарушением стандарта :)
anonymous
()
Ответ на: комментарий от anonymous
Если память не изменяет: GetModuleName

А в *NIX - простой вариант такой:

cat myprog #!/bin/sh

DIRNAME=`dirname $0` RUNDIR=`pwd` cd "$DIRNAME"; DIRNAME=`pwd`; cd "$OLDDIR"

myprog-bin --run-path "$DIRNAME"

И парсить аргументы коммандной строки.

rymis ★★
()
Ответ на: комментарий от rymis
max@triton:~/ > cat foo.sh
RNAME=`dirname $0`
RUNDIR=`pwd`
cd "$DIRNAME"; DIRNAME=`pwd`; cd "$OLDDIR"
echo --run-path "$DIRNAME"
max@triton:~/ > ./foo.sh
--run-path /home/max
max@triton:~/ > cd Projects
max@triton:~/Projects/ > ../foo.sh
--run-path /home/max/Projects
max@triton:~/Projects/ > PATH=$PATH:~
max@triton:~/Projects/ > foo.sh
--run-path /home/max/Projects
      
Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth
#!/bin/sh

OLDDIR=`pwd` DIR=`dirname "$0"` cd "$DIR" ; DIR=`pwd`; cd "$OLDDIR"

echo "$DIR"

Да, в том скрипте была ошибка, но общая идея понятна.

rymis ★★
()
Ответ на: комментарий от rymis
#!/bin/sh

OLDDIR=`pwd`
DIR=`dirname "$0"`
cd "$DIR" ; DIR=`pwd`; cd "$OLDDIR"

echo "$DIR"
rymis ★★
()
Ответ на: комментарий от anonymous
если запущена не из текущего каталога. в linux кстати так же.
eXOR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.