Можно ли изменить значение "/proc/self/exe" для исполняемого дочернего процесса?

Я пытаюсь использовать exec системный вызов для запуска другого исполняемого файла, но этот исполняемый файл использует readlink() на /proc/self/exe определить его местоположение файла. Я хотел бы, чтобы он думал, что он находится в том же месте, что и родительский исполняемый файл, но вместо этого он определяет свое фактическое местоположение. Я думаю, что я мог бы потенциально сделать что-то подобное, используя LD_PRELOAD перехватить readlink() позвоните, но есть ли более простой или более прямой способ сделать это? Я ищу только решения, которые могут быть реализованы в родительском исполняемом файле, изменение дочернего элемента не вариант.

1 ответ

Создайте жесткую ссылку на исполняемый файл:


$sudo ln /bin/ls ./ls
[sudo] password for plasser: 

# check it:
$ls -l ls
-rwxr-xr-x 2 root root 110080 mrt 10  2016 ls

#call it:
$./ls -l /proc/self/exe
lrwxrwxrwx 1 plasser uri 0 mrt  3 18:36 /proc/self/exe -> /home/plasser/krant/ls
$
Другие вопросы по тегам