Alterar sessão do processo

1

Digamos que eu tenha um processo com id de sessão 10030. Existe alguma maneira de remover o processo atual desta sessão e atribuí-lo a outro? Ou pelo menos remover desta sessão? Eu li isso:
The session's ID is the same as the pid of the process that created the session through the setsid() system call. That process is known as the session leader for that session group. All of that process's descendants are then members of that session unless they specifically remove themselves from it.

Mas infelizmente não consegui encontrar como " they specifically remove themselves from it " pode ser feito. Espero que você possa ajudar. obrigado.

    
por user3503143 27.06.2017 / 15:16

1 resposta

0

Se for uma coisa única, aqui está uma técnica que usa gdb para anexar a um processo em execução:

Inicie um programa de amostra. Nós estaremos mudando o sid de sleep .

spectras@etherbee:~$ (echo;sleep 86400)&
[1] 23340

Este é o nosso processo sleep :

spectras@etherbee:~$ ps -efj -q 23342
UID        PID  PPID  PGID   SID  C STIME TTY          TIME CMD
spectras 23342 23340 23340 22112  0 14:50 pts/5    00:00:00 sleep 86400

Vamos anexar a ele usando gdb . Observe que isso interromperá o processo.

spectras@etherbee:~$ gdb -p 23342
[lots of irrelevant text]
Attaching to process 23342
[more irrelevant text]

(gdb) p setsid()
$1 = 23342
(gdb) q
A debugging session is active.

        Inferior 1 [process 23342] will be detached.

Quit anyway? (y or n) y
Detaching from program: /bin/sleep, process 23342

Vamos ver o resultado:

spectras@etherbee:~$ ps -efj -q 23342
UID        PID  PPID  PGID   SID  C STIME TTY          TIME CMD
spectras 23342 23340 23342 23342  0 14:50 ?        00:00:00 sleep 86400

Nosso sleep agora é o líder do grupo de processos de sua própria sessão.

    
por spectras 27.06.2017 / 16:55