#include <linux/signal.h>
{
kill(pid, SIGTERM);
}
Linux - Как послать сигнал процессу из ядра?
Код:
Более того, не работает
Код:
#include <linux/syscalls.h>
{
sys_kill(pid, SIGTERM);
}
{
sys_kill(pid, SIGTERM);
}
Цитата:
Эффективный идентификатор пользователя равен 0 (пример root)
Эффективный или реальный идентификатор пользователя соответствует идентификатору владельца целевого процесса
Эффективный или реальный идентификатор пользователя соответствует идентификатору владельца целевого процесса
Если все условия соблюдены. То в случае ошибки kill вернет -1. Описание ошибки можно посмотреть strerror(errno).
Да и прежде чем пробывать это все программно, вызвал бы системную kill -S YOU_SIGNAL PID, может на процессе маска стоит от твоих сигналов.
Во вторых процесс помоему никогда не отмажется от SIGKILL, им и тести =)
Код:
WARNING: "sys_kill" [/home/ivanhoe/devel/mmod/mmod/mmod.ko] undefined!
Потоки ядра порождаются с помощью функции kernel_thread(), которая делает системный вызов clone(2) в режиме ядра. Потоки ядра обычно не имеют пользовательского адресного пространства, т.е. p->mm = NULL, поэтому они явно вызывают exit_mm(), например через функцию daemonize(). Потоки ядра всегда имеют прямой доступ к адресному пространству ядра. Получают pid из нижнего диапазона. Работают в нулевом кольце защиты и, следовательно, имеют высший приоритет во всех операциях ввода/вывода и имеют преимущество перед планировщиком задач.
Пользовательские задачи создаются через системные вызовы clone(2) или fork(2). И тот и другой обращаются к kernel/fork.c:do_fork().
Тут важно понять разницу между пространством уровня пользователя и пространством уровня ядра.