Ich mache einige Simulationsarbeiten mit Linux, und der Code, an dem ich gerade arbeite, funktioniert nur unter der Annahme, dass, sobald einem Prozess vom Kernel eine PID zugewiesen wurde, diese PID dieselbe bleibt, bis der Prozess beendet wird . Ich würde annehmen, dass dies wahr ist, aber da ich ein bisschen neu in der Linux-Welt bin, möchte ich nur sehen, ob es besondere Umstände gibt, die ich beachten sollte. Vielen Dank!
8
fork
ein neuer Prozess mit demselben Image erstellt wird, hat dieser neue Prozess natürlich einen anderen PID-Wert. Im Falle Ihrer Antwort würde ich sagen, dass das Programm seine PID ändert (indem es seinen Prozess ändert), aber nicht den Prozess (und die Frage bezieht sich auf Prozesse).execve()
. Da die PID nur bei der Prozesserstellung zugewiesen wird, folgt die Persistenz der PID.Na ja ... meistens .
Wie andere Poster bereits sagten , behält ein bestimmter Prozess seine PID auf unbestimmte Zeit bei. Auch durch eine oder mehrere Instanzen von
exec
.Ein Programmierer, der sich dieser Garantie auf einer Unix-Box entziehen wollte, hätte jedoch überhaupt keine Probleme. Er würde einfach
fork
HUP-Signale in der Tochter ignorieren und dann den Mutterprozess beenden. Das Ergebnis wäre, dass die Tochter mit einer neuen PID weitermacht und den Eindruck erweckt, dass der Prozess die PID geändert hat.quelle
PID unter Linux und Windows sind für diesen Prozess einzigartig. PIDs werden sich nie ändern.
quelle