Я создал двоичный файл с использованием c ++ в Ubuntu, который будет работать как демон, считывать данные из базы данных и сохранять их в XML-файле.
и для остановки демона я использую эту функцию, но она не работает.
void stopService()
{
int mypid;
if(((mypid = validate_pid()) > 0) || ((mypid = validate_non_pid()) > 0)) {if(0 == kill(mypid, SIGTERM) ) {
sleep(1);
}
else {
printf("Stopping %s [FAILED]\n", Service);// this line is getting printed.
}
}
else {
printf("Stopping %s [ Failed ] Not Running....\n", Service);
}
}
Я получаю вывод как остановка службы [не удалось].
'validate_pid()' It will written the pid from /proc/some id/cmdline.
а также
‘validate_non_pid ()’ Он записывает pid с использованием pgrep.
Я не пишу полный код, так как он станет длинным,
Заранее спасибо.
и одна вещь, которую я вызываю эту функцию, принимая аргумент командной строки и используя его в switch ();
‘дело’ е ‘:
StopService ();»
так как я могу убить этот процесс с помощью usin kill ().
Это может быть проблема с разрешением.
Распечатайте идентификатор процесса, используя
'getpid();'
Убить его вручную из терминала.
'sudo kill -9 processid'