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

Примерно такие задачи я решаю работой от свободной консоли, шестой-седьмой в зависимости от дистрибутива.

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

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

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

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

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

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

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

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

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

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

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

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

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

А это наверно мысль… Сервис с gdb, принимающий в качестве параметра PID, и имя программы которую надо запустить. Как думаете?

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

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

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

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

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

Если тебе нравится извращаться то ты конечно можешь сделать эмулятор SIGSTOP через подключение к процессу отладчика.

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

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

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

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

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

NetworkManager

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

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

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

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

torm7
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.