Дублировать процесс без вилки - PullRequest
0 голосов
/ 07 мая 2020

Во встроенной системе linux я вижу в ps 2 процессах одного и того же двоичного файла (pid1 = X, pid2 = Y) эти процессы не имеют потоков (/proc/X/task и /proc/Y/task не существуют )

Когда я смотрю на /proc/Y/status, я вижу, что родительский pid (PPID) - это X.

Я просматриваю двоичный файл в Ida, этот динамический c двоичный и не вижу функцию fork в таблице импорта.

Когда я меняю некоторые инструкции с PTRACE для pid X или pid Y, которые влияют на другой pid, так что кажется, что они имеют одну и ту же область кода

Если Y был потоком X, я должен видеть его в /proc/X/task, а не в ps без флагов показа потоков.

Какая функция может дублировать процесс, который имеет ту же область кода, но fork ?

1 Ответ

0 голосов
/ 07 мая 2020

Какая функция может дублировать процесс, использующий одну и ту же область кода?

Насколько мне известно, я могу перечислить системные вызовы:

  • fork
  • vfork - fork с некоторыми ограничениями и быстрее
  • clone - fork но linux -specifi c тонкая настройка всего
  • clone3 - более новая версия clone()
  • clone2 - clone, которая является спецификацией IA-64 c и доступна только на IA-64
...