Способ 1. Поместите исполняемый файл в какое-то место, отличное от стандартного пути. Создайте сценарий оболочки, который проверяет файл стража и, если файл стража отсутствует, запускает программу, ожидает завершения выполнения программы и затем удаляет файл стража. Если присутствует сторожевой файл, сценарий войдет в цикл с короткой задержкой (1 секунда? Как долго выполняется стандартное выполнение этой программы? Возьмите это и половину), снова проверьте файл предложения и т. Д.
Метод 2: Создайте отдельную программу, которая делает то же самое, что и скрипт, но вместо этого использует семафор или блокировку системного уровня. Вы можете даже использовать блокировку чтения / записи для файла. Программа будет выполнять fork () и exec () для реальной программы, ожидая выхода дочернего элемента перед очисткой часового.