Во-первых, проверьте свою RAM.
Процесс, который не отвечает на SIGKILL, является признаком или ошибки ядра или аппаратной ошибки. Когда Вы только изменили свое ядро, наиболее вероятная причина состоит в том, что Ваша RAM перестала работать, так проверьте его. Ошибки ядра могут иметь тонкие причины (такие как использование неверной версии gcc) и проявиться тонко (такие как работа отлично за исключением того, что X-сервер не запустился бы — та же правдивая история). Не вероятно, что Ваше новое ядро является багги при использовании обеспеченного распределением ядра, которое использует много других пользователей, но это могло произойти — возможно редкая ошибка, инициированная комбинацией шаблонов действия и драйверов. Попробуйте другое ядро.
Может также быть ошибка в Apache, который заставляет ее отказывать, но если SIGKILL не работает, это не отказ Apache.
Если Вы хотите разделить сервис и его UI, Вам нужен некоторый механизм IPC, чтобы заставить их связаться. Несколько из них существуют, но стандартом в основанных на Linux системах в эти дни является D-шина, которая может использоваться для доступа к сервису, записанному в C от клиента, записанного на любом языке, который имеет привязку D-шины (Java, и Моно имеют их). Ваш сервис должен предоставить D-автобусное-сообщение клиенту для вызова. D-шина также позволяет автоматически запускать сервисы. Остановка и конфигурирование могут легко быть реализованы.
Я не сделал бы Ваши результаты захвата UI каждыми несколькими миллисекундами, поскольку люди не могут обработать информацию настолько быстро. Частота обновления 25-30 раз в секунду должна быть более чем достаточно.