системный вызов kill () с SIGTERM не работает

Я создал двоичный файл с использованием 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 ().

1

Решение

Это может быть проблема с разрешением.
Распечатайте идентификатор процесса, используя

'getpid();'

Убить его вручную из терминала.

'sudo kill -9 processid'
0

Другие решения


По вопросам рекламы [email protected]