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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.