Счастливый понедельник всем вам!Почему и как создать сторожевого пса в какао/цель-C
Вот моя ситуация. Любая помощь очень ценится!
Я создал исполняемый файл, который, когда он установлен, помещается в папку запуска агентов на компьютере. Теоретически он должен работать постоянно, собирая данные каждую секунду. Он может остановиться, когда машина спит, но перезагрузитесь, когда компьютер снова активирован.
Вот моя проблема: иногда программа просто спонтанно останавливается, обычно после нескольких дней бега. Если перезапустить компьютер, программа перезагружается и снова запускается некоторое время до того, как возникнет такая же проблема.
Я не знаю причины этой проблемы, но мне сказал друг, что я могу создать «сторожевой таймер», который каждую минуту проверяет, работает ли мой исполняемый файл. Если это не так, тогда сторожевой таймер перезапустит исполняемый файл.
Любые указания относительно того, как это сделать? Мои приложения написаны в Objective-C и Cocoa и запускаются на компьютерах Mac.
Большое спасибо!
EDIT 1
Я объясню, как приложение работает в меру своих способностей. Это в основном набор методов, написанных на C и Objective C, который запрашивает информацию о системе каждую секунду:
- -bytes переданного
- -keyboard деятельность-
- -mouse деятельности-
- -percentage из жесткого диска израсходованы
- -процесс, который имеет фокус клавиатуры
... и т.д..
Он делает это с использованием API низкого уровня, предоставляемого веб-сайтом Apple Developer. Он записывает информацию в файл каждую секунду. Каждый час файл зашифровывается и создается новый файл.
Пожалуйста, спросите, если больше требуется разъяснение :)
EDIT 2
Для тех, кто интересно, вот файл PLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.Intel</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Library/LaunchAgents/Contents/Intel</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Еще раз спасибо .. ..
Возможно, вам повезет больше, если вы скажете нам, как вы сейчас это делаете. – jer
@jer, Спасибо за ваш интерес. Не совсем уверен, что вы хотите прояснить. Мой исполняемый файл - это программа, которая собирает данные, такие как количество переданных байтов, каждую секунду. Это демон, который запускается при запуске, поскольку он помещается в папку Launch Agents в комплекте с файлом plist. Любые советы приветствуются. –
То, о чем я прошу, - это описать свою программу, а не то, что она существует, но как она действует в настоящее время, так как вы просите альтернативы, лучше всего мы знаем, как это делается сейчас. – jer