Изменение идентификатора процесса (PID) в Linux

Можно ли изменить PID в Linux? Если кто-нибудь знает, пожалуйста, скажите мне.

Требование: на самом деле я хочу вывести фоновый процесс на передний план, который запускается под init. Поэтому, если я могу изменить PID или родительский PID процесса, я смогу достичь своей цели.


person Pavunkumar    schedule 14.07.2011    source источник
comment
Я думаю, вы говорите о контроле за работой, но я не думаю, что вы понимаете, о чем спрашиваете. Попробуйте добавить дополнительную информацию для уточнения.   -  person Anthony Giorgio    schedule 17.01.2012
comment
Хотя вы, вероятно, могли бы взломать внутренности, чтобы изменить pid/ppid, фоновая задача, скорее всего, находится в режиме демона и не будет открывать stdout/stderr или перенаправлять файлы в другое место.   -  person Marc B    schedule 25.05.2012


Ответы (2)


Нет, в Unix это невозможно. Возможно, вы сможете использовать fork для достижения этого эффекта, но вы должны сообщить нам, чего вы пытаетесь достичь.

pid_t pid;

/* I want a new PID. */
pid fork();
if (pid == 0) {
    /* getpid() will show I've got a new PID. */
else
    _exit(0); /* Parent or check for -1 (tinfoil hat)

Очевидно, как я уже говорил, вы «можете» использовать это.

person cnicutar    schedule 14.07.2011
comment
на самом деле я хочу вывести фоновый процесс на передний план, который запускается под init. Итак, если я могу изменить идентификатор процесса или идентификатор родительского процесса процесса. я могу достичь своей цели. - person Pavunkumar; 14.07.2011
comment
@pavun_cool Я не уверен, что понимаю, что вы имеете в виду под передним планом и фоном. - person cnicutar; 14.07.2011

Краткий ответ: Нет.

Длинный ответ: идентификаторы процессов (PID) генерируются системой, они уникальны и генерируются при запуске приложения. Вы не можете контролировать способ их создания...

person Quamis    schedule 14.07.2011
comment
В Linux пользователь root может влиять на PID, присвоенный процессу, записывая на один PID меньше желаемого числа в /proc/sys/kernel/ns_last_pid (например, criu. org/Pid_restore), а пользователь без полномочий root может просмотреть все пространство PID (например, github.com /twosigma/set_ns_last_pid). - person Radostin Stoyanov; 21.05.2020