Можно ли изменить значение "/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
$