POSIX no especifica que el PID de cada nuevo proceso se obtiene al incrementar el PID anterior. Solo requiere que sea único.
En un sistema donde los PID se incrementan en cada uno fork()
, he observado que los valores se ajustan después de alcanzar un límite superior (que en mi experiencia es de alrededor de 2 15 ). Después de finalizar, los nuevos PID no se incrementan estrictamente, ya que algunos valores de PID seguirán en uso en ciclos anteriores.
No debería haber ningún problema hasta que tenga 2 N ejecutando procesos simultáneamente . Sospecho que el sistema alcanzaría algún límite de capacidad mucho antes de que eso sucediera. En ese caso, la fork()
llamada al sistema fallaría y probablemente se establecería errno
en EAGAIN
o ENOMEM
( man fork
para más detalles).
El código que implementa fork
puede o no verificar si hay PID disponibles. Puede que no moleste, porque supone que los recursos del sistema se habrían agotado antes de llegar a ese punto, o podría tener una verificación explícita en aras de la integridad y para manejar las posibilidades futuras. No lo he comprobado, y si lo hubiera hecho, solo podría direccionar el núcleo que había visto.