Какова политика назначения PID в Windows? Повторные запуски процесса, вызывающего _getpid (), указывают на непоследовательное присвоение (3548,3344,3628,2748,4872,2360).
Учитывая наблюдаемое непоследовательное назначение PID, возможно ли, чтобы два разных процесса с одним и тем же pid выполнялись близко друг к другу во времени? Очевидно, что процессы не будут работать одновременно.
Особенно неразумно использовать PID в именовании временных файлов?
Я пишу программу, которая взаимодействует с другим исполняемым файлом, генерируя необходимые входные файлы, вызывая исполняемый файл и считывая сгенерированные выходные файлы из указанного исполняемого файла. После завершения CLEAN промежуточные файлы удаляются.
Меня беспокоит то, что если временные файлы не очищаются и если PID используются повторно, между старыми временными файлами, которые не были очищены, и новыми файлами может возникнуть неоднозначность. Если исполняемый файл не генерирует новый выходной файл из-за ошибки, старый файл может выглядеть как вновь созданный файл, поэтому ошибка может быть не обнаружена.
Существуют и другие способы повышения надежности, такие как использование GUID для временных файлов, использование только чистых каталогов для временных файлов или проверка отсутствия файлов с таким же именем, как у целевого выходного файла. Некоторые из этих методов следует использовать, поскольку идентификаторы PID будут обязательно повторяться при перезагрузке компьютера или если машина оставалась включенной в течение достаточного времени.
Вопрос в основном связан с моим любопытством относительно того, почему Windows выделяет PID иначе, чем * nix.