Pergunta

Eu tenho uma pergunta um pouco boba, se eu tenho uma série de processos que são criadas ... estes não são necessariamente algum tipo de herança, o PID dos processos têm de ser números pids contínuas ou aleatórias?

Foi útil?

Solução

Este é determinado pelo sistema operacional.

Em geral, eles são geralmente sequencialmente atribuído pelo sistema operacional. No entanto, este comportamento não é algo para tomar decisões com base em cima, uma vez estado a maioria das especificações do sistema operacional que a alocação de processo ID não é determinística (ou seja: pode ser aleatória, e pode mudar em uma versão futura, etc).

Outras dicas

No Linux, pids são geralmente atribuídos sequencialmente em uma base de todo o sistema, mas eles vão envolver em torno periodicamente, e pode haver 'lacunas' causado por outros processos não relacionados. Em um caso extremo, você pode ter um 'gap' grande o suficiente para causar este wrap-around. Portanto, não assumir qualquer ordenação particular -. Em vez manter explicitamente o controle de seus pai ou filho PIDs processo

Veja como testar o seu sistema faz:

for i in $(seq 20); do ps; done | grep ps

Os PIDs dos comandos "PS" são processos consecutivos, ou o mais próximo consecutivo como qualquer outro chamador poderia razoavelmente esperar para ser capaz de desova.

Meu terminal de cygwin no Windows aloca-los aleatoriamente-ish, meus aloca hospedagem los seqüencialmente (com lacunas ocasionais que presumivelmente são para processos são executados por outros usuários ou servidores).

Alguns consideram alocação de PID seqüencial para ser um ligeiro problema de segurança possível, uma vez que pode vazar informações entre usuários de um sistema multi-usuário.

No AIX, você vai ver muitas vezes maior (por exemplo, 7 dígitos) PIDs e eles não são necessariamente alocados semi-sequencial (embora eu parecia estar ciclismo em incrementos de 2 quando eu testei, não havia outro usuário na máquina, por isso não pode significar muito).

login fresco em uma máquina AIX 5.3:

$ ps
     PID    TTY  TIME CMD
 1060910 pts/27  0:00 -ksh
 1155224 pts/27  0:00 ps
$

depende da sua plataforma, mas você não deve estar dependente de qualquer ordem específica para seus do PID.

No Windows, do PID são normalmente alocados em números crescentes, mas como processos de saída do PID pode ser reciclado e você vai ver casos em que um processo mais recente tem um pid menor do que um processo mais velho. Além disso, de pid sair do mesmo namespace como tid do, então você não vai ver de pid aumento de 4 como você lançar novos processos.

De sua perspectiva que será aleatória. O sistema gerencia esses números e atribui-lhes como os processos são criados. Um rápido olhar para o PID está atualmente em meus shows sistema que todos eles são divisível por 4 ...

Se você está criando esses criança você vai saber o PID, o PID depende do programador OS, você não se preocupam com essas coisas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top