2016-11-08 71 views
1

我試圖開發一個系統調用,它能夠接收pid作爲參數,終止pid並打印到內核日誌。到目前爲止,我有下面的代碼,但是在嘗試編譯內核時遇到了這個錯誤。我該如何解決?有沒有辦法找到殺死在這種情況下被殺害的PID的用戶名?使用pid和在系統調用中查找綁定到pid的用戶來終止進程

kill_log/kill_log.c:2:24:致命錯誤:signal.h:沒有這樣的文件或目錄 編譯終止。 腳本/ Makefile.build:289:配方目標 'kill_log/kill_log.o' 失敗 化妝[1]:* [kill_log/kill_log.o]錯誤1 生成文件:968:配方目標 'kill_log' 失敗 令:* [kill_log]錯誤2

#include <linux/kernel.h> 
#include <signal.h> 

asmlinkage long sys_kill_log(pid_t pid) 
{ 
    kill(pid, SIGUSR1); 
    printk(KERN_WARNING "The process %d has been killed\n", pid); 

    return 0; 
} 
+0

在基於RHEL的linux中'/ usr/include/signal.h'是由'glibc-headers'提供的。您可以使用'readproc()'讀取進程表並獲取您感興趣的特定'PID'。然後使用'getpwuid()'轉換在proc入口中找到的'uid'。 – alvits

回答

0

根據您的錯誤信息,你錯過signal.h。在基於debian的系統上,您需要安裝libc6-dev

關於檢索用戶名,你可以試用getpwuid

相關問題