LINUX.ORG.RU

кстати «путь до запущенного бинарного файла» != «путь текущей папки из которой программа была запущена», для первого смотри readlink + /proc/self/exe, GetModuleFileName и пр., т.к. нет кроссплатформенного решения

anonymous
()
Ответ на: комментарий от dpkg-i

В argv ты можешь найти всё, что угодно, вместо реальной команды запуска программы.

$ echo exec -a ququ sh -c "'echo \$0'" | sh
ququ
geekless ★★
()
Ответ на: комментарий от dpkg-i

вообщем объясните доходчиво, чем грозит использование argv?

dpkg-i
() автор топика

что бы было платформо-независимым

Посмотри в сторону языков более высокого уровня, например Java. Ты же не драйвер пишешь!

CYB3R ★★★★★
()
Ответ на: комментарий от dpkg-i

Ты тупой? Если программа, делающая exec твоей программы, сказала, что твоя программа зовётся «VasyaDurak», то что ты дальше с этим будешь делать? И как это тебе поможет установить реальный пусть запуска твоей программы?

geekless ★★
()
Ответ на: комментарий от geekless

А мне и не надо название проги, я его и так знаю и укажу, мне надо название директорий начиная от той папки в которой запустилась прога.

dpkg-i
() автор топика
Ответ на: комментарий от dpkg-i

Я так и не понял что вам нужно.

Допустим файл находится в директории /usr/bin, текущая директория /home/user, вы запускаете прогу как /usr/bin/prog. Какую строку вы хотите получить?

stack_protector
()
Ответ на: комментарий от stack_protector

я хочу: если файл находится в /usr/bin то возвращался путь именно /usr/bin, если файл находится в домашнем то возвращался путь /home/имяпользователя

dpkg-i
() автор топика
Ответ на: комментарий от dpkg-i

еще можно взять qtcore/wxbase - там есть такая функция

anonymous
()
Ответ на: комментарий от dpkg-i

exec.c

#include <unistd.h>
int main(void)
{
    execlp("./prog", "Hello world", NULL);
    return 0;
}
prog.c
#include <stdio.h>
int main(int argc, char** argv) {
    printf("%s\n", argv[0]);
    return 0;
}

Запуск exec запустит prog, которая выведет «hello world» — явно не то что ты ожидал от argv[0]

stack_protector
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.