Existe uma garantia de que os ids de processo no Windows não serão reutilizados dentro de um certo período de tempo

0

Eu tenho um script que gera vários processos e, em seguida, os monitora por meio de seu ID de processo, eu não gostaria de fechar um e, em seguida, outro processo para tomar o pid dentro do tempo que estou verificando. Existe alguma garantia? Até agora, descobri que ninguém sabe realmente quando é reutilizado se for aleatório ou não.

    
por relipse 31.05.2014 / 00:05

1 resposta

1

O ID do processo é um valor associado ao objeto do processo e, enquanto o objeto do processo ainda estiver por aí, o ID do processo também estará ativo. O objeto de processo permanece enquanto o processo ainda estiver em execução (o processo mantém uma referência a si mesmo implicitamente) ou enquanto alguém ainda tiver um identificador para o objeto de processo.

Se você pensar bem, isso faz sentido, porque enquanto ainda houver um identificador para o processo, alguém pode chamar WaitForSingleObject para aguardar a saída do processo ou chamar GetExitCodeProcess para recuperar o código de saída, e esse código de saída deve ser armazenado em algum lugar para recuperação posterior.

Quando todas as alças são fechadas, o kernel sabe que ninguém vai perguntar se o processo ainda está em execução ou qual é o código de saída (porque você precisa de uma alça para fazer essas perguntas). Nesse ponto, o objeto do processo pode ser destruído, o que, por sua vez, destrói o ID do processo.

O que acontece se alguém chama o OpenProcess em um processo zumbi? A mesma coisa que acontece se eles o chamam em um processo em execução: eles conseguem lidar com o processo. Por que você iria querer lidar com um processo de zumbis? Bem, você pode não saber que é um zumbi ainda; você está recebendo o identificador para que possa chamar WaitForSingleObject para ver se ele foi encerrado ainda. Ou você pode conseguir o controle, sabendo que é um zumbi, porque você quer chamar GetExitCodeProcess para ver qual era o código de saída.

    
por 31.05.2014 / 07:10

Tags