In C++ habe ich eine Ressource, die an eine PID gebunden ist. Manchmal tritt der Prozess, der mit dieser PID verbunden ist, abnormal aus und gibt die Ressource aus.Was ist eine einfache Möglichkeit zu testen, ob ein Prozess einer bestimmten ID derzeit auf Linux läuft?
Daher denke ich daran, die PID in die Datei, die die Ressource aufzeichnet, zu setzen. Wenn ich dann eine Ressource erhalte, wenn ein Element als registriert angezeigt wird, wird es verwendet, um zu sehen, ob gerade ein Prozess läuft, der mit der PID übereinstimmt, und wenn nicht, bereinige die ausgelaufene Ressource.
Ich weiß, dass es eine sehr geringe Wahrscheinlichkeit gibt, dass eine neue nicht freigegebene PID jetzt die gleiche Nummer teilt, aber das ist besser als Lecken ohne Aufräumen, das ich jetzt habe.
Alternativ, vielleicht gibt es eine bessere Lösung dafür, wenn ja, bitte schlagen Sie vor, sonst werde ich die Pid-Aufnahme verfolgen.
Weitere Details: Die Ressource ist eine Portnummer für die Kommunikation zwischen einem Client und einem Server über TCP. Nur eine Instanz des Clients darf eine bestimmte Portnummer auf einem Computer verwenden. Die Portnummern stammen aus einer Reihe von verfügbaren Portnummern, die verwendet werden können. Während der Client ausgeführt wird, notiert er die Portnummer, die er in einer speziellen Datei auf der Festplatte verwendet, und bereinigt diesen Eintrag beim Beenden. Bei einem abnormalen Exit wird dies nicht immer bereinigt und die Portnummer wird mit dem Hinweis versehen, dass sie verwendet wird, wenn sie nicht mehr verwendet wird.
Für welches System möchten Sie dies? Unter Windows wird es anders sein als unter Linux. –
Wenn Sie Linux ausführen, sollten Sie sich das Dienstprogramm pidof ansehen. Wenn du dein eigenes Pid findest, rennst du. –
die Annahme, dass Pid würde es nicht gut wiederholen. es sei denn, Sie haben einen Fall von Tausenden von kurzlebigen Prozessen –