управление после неожиданного завершения работы

#php #c

#php #c

Вопрос:

Я работаю над программой, которая отправляет команду на сервер и создает файл на сервере, чтобы сообщить ему, что он подключен, например, во время работы программы она создает файл с надписью «here» каждый раз, когда она выполняет цикл, php-сайт затем проверяет сервер на наличие этого файла, если файл есть, он знает, что программа подключена. Однако, когда он внезапно останавливается, скажем, из-за выключения компьютера, это может произойти при завершении работы, когда файл был создан, поэтому скажите, что он отключается сейчас через 5 минут, если сервер проверяет, что файл будет там, есть ли какой-либо способ заставить программу удалить файл при неожиданном завершении работы? Это на C .

спасибо,

Ответ №1:

Вероятно, вам лучше создать для этой цели что-то другое, чем файл. Поскольку файлы обычно используются как более постоянное решение для хранения, это не то, что вы хотите.

То, что я бы порекомендовал, это что-то вроде мьютекса или какого-либо другого именованного, реализованного в ОС, межпроцессного токена или примитива синхронизации. С тех пор, если ваша программа завершится (нормально или ненормально), ОС очистит токен за вас, так что вам не нужно беспокоиться о ручной очистке.

В Windows вы можете использовать что-то вроде именованного мьютекса, не совсем уверен, что вы использовали бы в Linux или других Unix, но, скорее всего, что-то подобное будет доступно.

Ответ №2:

Если процесс создания выполняется в Windows, да. Создайте файл с флагом FILE_FLAG_DELETE_ON_CLOSE . Это приведет к автоматическому удалению файла при закрытии его дескриптора. Дескриптор также закрывается, когда ваше приложение каким-либо образом завершается.

Однако я не уверен, что этот файловый механизм является самым разумным решением. Возможно, вашей клиентской программе будет намного проще просто извлекать простую веб-страницу с вашего PHP-сайта каждые 10 секунд.