2016-04-12 27 views
1

Sadece bir kullanıcı arabirimi programından bir çekirdek modülünü öldürmenin bir yolu olup olmadığını merak ediyorum.Kullanıcı komutunun, kullanıcı arabiriminden çekirdek alanına bir sistem çağrısı olduğu için çalışmayacağını biliyorum .Bir çekirdek modülünden bir kullanıcı programı Killing

+0

http://www.linuxquestions.org/questions/linux-kernel-70/how-to-send-a-signal-from-a-module-to-a-process-803485/ – vestlen

cevap

3

Sen OOM katil buraya nasıl yapar görebilirsiniz

int signum = SIGKILL; 
task = current; 
struct siginfo info; 
memset(&info, 0, sizeof(struct siginfo)); 
info.si_signo = signum; 
int ret = send_sig_info(signum, &info, task); 
if (ret < 0) { 
    printk(KERN_INFO "error sending signal\n"); 
} 

çağıran süreci öldürecek Bu kod ... ...

http://lxr.free-electrons.com/source/mm/oom_kill.c?v=3.16#L516

+0

Biliyorum eğer kullanıcı alanı programının adı, örneğin "xyz", bir çekirdek modülünden bu işleme bir sinyal göndermek istiyorum. Yukarıdaki kod, mevcut işlemi öldürüyor gibi görünüyor. – hmdb

+0

'Görev' 'i bulmanız, ardından ona bir sinyal göndermeniz gerekir. – Harry

0

ne syscall olabilir biliyorsanız Kullanıcıların sinyal iletmek için kullandıkları, neden uygulandığını kontrol edemiyorsunuz? Daha da önemlisi, neden en başta bir sinyal göndermeniz gerektiğini düşünüyorsunuz? İlk etapta neyin işaretleneceğini nasıl belirliyorsunuz?

Bu müthiş bir üniversite ödevinin ötesinde mi?

İlgili konular