ID / nomes do processo de análise de / proc, IDs de encadeamento

2

Quando estou analisando IDs de processo de / proc, obviamente, cada thread de um processo recebe seu próprio ID. E percebo que todos os threads no mesmo processo podem ser reunidos de /proc/${pid}/task/ .

Mas a minha pergunta é, posso supor que o primeiro ID na lista (o menor número?) é o principal segmento do processo?

O objetivo que estou tentando fazer é escrever um rápido script ps em python sem usar um subprocesso ou invocar o shell.

    
por Falmarri 08.06.2011 / 19:20

1 resposta

3

Você não pode presumir que ids de processo (e ids de thread) podem ser reutilizados, portanto, a ordem não é garantida. (Isso não é provável em um sistema de 64 bits recém-inicializado, mas você o verá em máquinas com grandes uptimes).

Você pode obter o id do grupo de threads (que é o ID do processo) do /proc/${id}/status . Está na linha Tgid: nnnnn .

Ex:

$ cat /proc/8288/status 
Name:   vlc
State:  S (sleeping)
Tgid:   8281               // main vlc process id
Pid:    8288               // thread id
    
por 08.06.2011 / 19:44