LINUX.ORG.RU
ФорумAdmin

запуск процесса как потомка указанного PID

 , , , ,


0

1

Здравствуйте!

Подскажите, как указать запускаемому процессу, что он должен быть потомком того PID, который указан? Это вроде форком называется.



Последнее исправление: torm7 (всего исправлений: 2)

Какой процесс породил, тот и будет родителем. Нельзя просто так взять и назначить родителем кого угодно(кроме случаев, когда родительский процесс умирает и дочернего забирает себе init).

Форк происходит от текущего запущенного процесса. Этот текущий и является родителем форкнувшегося.

Мне кажется, ты не совсем понимаешь, что тебе нужно. Объясни задачу подробнее.

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

ну давай пойдем по сложному пути…

Есть сервис системный сервис openvpn, который требует от пользователя логин, пароль, otp. Есть пользователь, который хранит эти данные в менеджере паролей pass. Есть systemd сервис, который при запуске ВПН идет к пользователю и получает всё что нужно. В кратце, запустится диалоговое окно программы pinentry, для ввода мастер ключа от хранилища паролей пользователя.

Есть ноутбук, на котором всё это крутится и у которого часто закрывается крышка, при этом работа ВПН прерывается. После открытия крышки соединение пытается восстановиться, все доходит до pinentry и… Его диалоговое окно надо куда то вывесить.

Я вывешиваю в терминал где крутится bash пользователя, где он успешно с этим bash и делит I/O, половина вводимого уходит в bash, половина pinentry. А надо, что бы оно форкнулось от bash и не делило с ним I/O. Как буд то в этом экземпляре bash запустили эту команду.

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

Ну на слаквари просто вписываешь в inittab запуск интересующей программы на нужной консоли и всё. :) Так у меня сейчас стартуют виртуалки без графики. До этого много всяких кривоватых программ.

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

Не, pinentry жёстко прибито к сеансу пользователя. Т.е. сначала надо залогиниться, а только потом диалоговое окно. Иначе она не запустится…

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

Мне кажется ты уже создавал эту тему и я тебе там отвечал, что баш надо сделать kill -STOP на это время. В чём проблема то?

А то что ты хочешь сделать в этой теме - глупость. Даже если ты хакнешь ядро и перепишешь parent-pid, это никак на конкуренцию за чтение из терминала не повлияет.

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

Да, я помню и пользуюсь им. Просто хочется более изящного решения.

Неужели нельзя сказать, эй ты вон третий слева, форкнись с сохранением окружения и запусти вот это, а сам постой в сторонке.

Это наверно решило бы много проблем. На моем примере, мне не пришлось бы разбираться, почему pinentry из баша работает как надо, а при вызове из сервиса надо делать кульбиты в воздухе и понимать чего ей не хватает, а это strace с вдумчивым чтением, сравнением и всякими удовольствиями…

Или это будет не меньшее развлечение с gdb?

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

pinentry из баша работает так потому что баш знает что он только что кого-то запустил и штатно, в соответствии с логикой работы шелла, ждёт от него код возврата. К твоим странным идеям подмены ppid это никакого отношения не имеет.

а сам постой в сторонке.

Это и есть SIGSTOP. А форкать именно баш никакой нужды, как я уже написал, нет.

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

pinentry из баша работает так потому что баш знает что он только что кого-то запустил и штатно, в соответствии с логикой работы…

Ты тут неправ, pinentry так работает потому что наслудует от баша и х.з. ещё чего всю бороду переменных и т.п. Так вот что бы избежать такой порнографии в будущем, гораздо удобнее форкнуться от работающего процесса. О чем собственно и этот трэд.

torm7
() автор топика
Последнее исправление: torm7 (всего исправлений: 1)
Ответ на: комментарий от MagicMirror

Я не нашел готового решения этих задач.

NetworkManager

Очень люблю однострочные комментарии людей. Ну расскажи, как его подружить с менеджером паролей, как получить OTP, как подсунуть это в ВПН?

А то может я действительно зря столько времени убил на изучение темы? Да, желательно пруфы. Если хочешь отправить читать, то я там был, не нашел.

torm7
() автор топика
Ответ на: комментарий от MagicMirror

Я разобрался, в том что ты мне советуешь, там только 2FA. Если ты прочитаешь то, на что отвечаешь, тогда узнаешь что это не основная проблема.

torm7
() автор топика