при старте варианты: 1. пишешь маркер в базу 2. создаешь заблокированный файл
при финише, удаляешь/освобождаешь
тогда, при следующем старте, можешь проверить...
с освобождением дескриптора файла, вроде как, даже лучше. Он освобождается, даже если процесс не стандартно завершился (свет вырубили, по эксепшену вылетел)