PID Zuweisungsrichtlinie in Windows / Verwenden von PIDs für die Benennung von temporären Dateien

StackOverflow https://stackoverflow.com/questions/996649

  •  13-09-2019
  •  | 
  •  

Frage

  1. Was ist die PID-Zuweisungsrichtlinie in Windows? Wiederholte Läufe eines Prozesses aufrufen _getpid () gibt nicht sequentielle Zuordnung (3548,3344,3628,2748,4872,2360).

  2. die beobachtete nicht sequentielle Zuordnung von PIDs Gegeben ist es möglich, für zwei verschiedene Verfahren mit dem gleichen pid zu eng in der Zeit voneinander ausgeführt werden? Offensichtlich würden die Prozesse nicht gleichzeitig ausgeführt werden.

  3. Ist es besonders unklug eine PID bei der Benennung von temporären Dateien zu benutzen?

Ich schreibe ein Programm, das durch die Erzeugung der erforderlichen Eingabedateien, den Aufruf der ausführbaren Datei und liest die erzeugten Ausgabedateien mit einer anderen ausführbaren interagiert die ausführbare Datei. Nach SAUBER Kündigung werden die Zwischendateien gelöscht.

Meine Sorge ist, dass, wenn die temporären Dateien nicht gereinigt sind und wenn PIDs wiederverwendet werden, könnte es eine Mehrdeutigkeit zwischen alten temporären Dateien sein, die nicht auf und neuen Dateien gereinigt. Wenn die ausführbare Datei erzeugt keine neue Ausgabedatei aufgrund eines Fehler der alten Datei wie die neu erstellte Datei erscheinen könnte, so dass der Fehler nicht aufgefangen werden kann.

Es gibt andere Möglichkeiten Robustheit hinzuzufügen wie eine GUID für die temporären Dateien verwenden, nur saubere Verzeichnisse für temporäre Dateien verwenden oder die Überprüfung, dass es keine Dateien, die die gleichen Namen wie die Zielausgabedatei teilen. Einige dieser Techniken verwendet werden sollten, da PIDs sicher ist, auf Neustart der Maschine wiederholt werden oder wenn die Maschine verlassen wird für eine ausreichende Menge an Zeit ausgeführt wird.

Die Frage stammt meist von meiner Neugier in Bezug auf, warum Windows-PIDs in einer anderen Art und Weise zuteilen dann * nichts.

War es hilfreich?

Lösung

eine PID auf diese Weise zu verwenden ist problematisch. Ich habe Programme gesehen, die die PID in Verbindung mit der aktuellen UTC-Zeit verwenden, wenn die Benennung von Dateien, so dass Sie mit Dateien mit dem Namen foo_55145_4a3667d3.log enden. Die andere Option verwenden, um die FILE_ATTRIBUTE_TEMPORARY und FILE_FLAG_DELETE_ON_CLOSE Optionen im dwFlagsAndAttributes Parameter auf CreateFile() .

Andere Tipps

Prozess-IDs und Thread-IDs aus demselben Pool unter Windows. Das System wird sofort Thread und Prozess-IDs wiederverwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top