Est-il possible d'empêcher la réutilisation d'un PID?Bash: Est-il possible d'empêcher la réutilisation d'un PID?
Par exemple, si j'exécuter un travail myjob
en arrière-plan avec myjob &
, et obtenir le PID à l'aide PID=$!
, est-il possible d'empêcher le système Linux de réutiliser ce PID jusqu'à ce que je l'ai vérifié que le non PID existe plus (le processus est terminé)?
En d'autres termes, je veux faire quelque chose comme:
myjob &
PID=$!
do_not_use_this_pid $PID
wait $PID
allow_use_of_this_pid $PID
Les raisons de vouloir le faire ne font pas beaucoup de sens dans l'exemple ci-dessus, mais envisager de lancer plusieurs tâches de fond en série et en attente pour eux tous à finir.
Certains programmeurs ont raison de signaler que 2 processus peuvent partager le même PID. C'est exact, mais pas ce que je demande ici. Je demande une méthode pour empêcher qu'un PID soit réutilisé après qu'un processus ait été lancé avec un PID particulier. Et puis aussi une méthode de réactiver son utilisation plus tard après avoir fini de l'utiliser pour vérifier si mon processus d'origine a fini.
Comme il a été demandé, voici un cas d'utilisation:
- lancer plusieurs tâches de fond
- obtenir PID des travaux d'arrière-plan
- empêchent de PID d'être ré-utilisé par un autre processus après arrière-plan l'emploi prend fin
- chèque « emplois de base » du PID - de, par exemple pour assurer les travaux d'arrière-plan finition
- [note si la réutilisation PID désactivée pour les années PID des travaux d'arrière-plan ces PIDs POUVAIT t être utilisé par un nouveau processus qui a été lancé après un processus d'arrière-plan mis fin] *
- réactivez PID des travaux d'arrière-plan
- répétition
* Des explications complémentaires:
- On suppose 10 emplois lancé
- Job 5 sorties
- Nouveau processus par un autre utilisateur, par exemple, ils se connecter à un TTY
- Le nouveau processus a le même PID que Job 5!
- Maintenant, notre script vérifie la fin du Job 5, mais voit PID utilisé par tty!
Le noyau l'interdit déjà. Aucun processus n'a le même pid. –
@Someprogrammerdude D'accord, je ne l'ai pas assez bien expliqué, je vais éditer ma question, une seconde – user3728501
Peut-être que vous pouvez ajouter la cas d'utilisation? Dites-nous quel problème vous essayez de résoudre? Lecture connexe sur [le problème XY] (http://xyproblem.info/) –