Я пишу программу Qt/C++, которая выполняет длительные симуляции, и для защиты от потери данных я написал некоторое простое поведение автосохранения. Программа периодически сохраняет во временный каталог пользователя (используя QDir::temp()), и если программа корректно закрывается, этот файл удаляется. Если программа запускается и видит файл в этом каталоге, она предполагает, что предыдущий экземпляр потерпел крах или был принудительно завершен, и предлагает пользователю загрузить его.
Теперь вот сложность - я бы хотел, чтобы эта функция работала правильно, даже если несколько экземпляров программы используются одновременно. Поэтому, когда программа загружается, она не может просто искать наличие файла автосохранения. Если он его находит, ему необходимо определить, был ли этот файл создан работающим экземпляром (в этом случае нет ничего плохого и ничего не нужно делать) или он был оставлен экземпляром, который потерпел крах или был принудительно завершен (в в этом случае он должен предложить пользователю загрузить его).
Моя программа предназначена для Windows/Mac/Linux, так как лучше всего реализовать это с помощью Qt или иным образом кроссплатформенным образом?
Редактировать: В комментариях предлагается использовать идентификатор процесса, который я могу получить с помощью QCoreApplication::applicationPid(). Мне нравится эта идея, но когда программа загружается и видит файл с определенным PID в имени, как она может просмотреть другие запущенные экземпляры (если они есть), чтобы увидеть, есть ли совпадение?