Всем счастливого понедельника!
Вот моя ситуация.Любая помощь очень ценится!
Я создал исполняемый файл, который после установки помещается в папку «Агенты запуска» на машине.Теоретически он должен работать постоянно, собирая данные каждую секунду.Он может остановиться, когда машина спит, но перезапустить, когда компьютер снова активируется.
Вот моя проблема: иногда программа просто самопроизвольно останавливается , обычно после пары дней работы.Если кто-то перезагружает компьютер, то программа перезапускается и снова запускается некоторое время, прежде чем возникает та же проблема.
Я не знаю причину этой проблемы, но друг сказал мне, что я могу создать «сторожевой таймер», который каждую минуту будет проверять, работает ли мой исполняемый файл.Если это не так, сторожевой таймер перезапустит исполняемый файл.
Есть какие-нибудь указатели относительно того, как это сделать?Мои приложения написаны на Objective-C и Cocoa и работают на Mac.
Большое спасибо!
РЕДАКТИРОВАТЬ 1
Я будуобъяснить, как приложение работает в меру моих возможностей.В основном это набор методов, написанных на C и Objective C, которые каждую секунду запрашивают информацию о системе:
- -байт передано
- -ключение клавиатуры-
- - активность мыши -
- - процент использования жесткого диска
- - процесс с фокусом клавиатуры
... и т. д.
Это делаетэто с использованием API низкого уровня, предоставленного веб-сайтом Apple Developer.Он записывает информацию в файл каждую секунду.Каждый час файл архивируется и создается новый файл.
Пожалуйста, спросите, нужны ли дополнительные разъяснения:)
РЕДАКТИРОВАТЬ 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>
Еще раз спасибо ....