2016-11-08 5 views
1

pidを引数として受け取り、pidをkillしてカーネルログに出力できるシステムコールを開発しようとしています。これまでのところ、私は以下のコードを持っていますが、カーネルをコンパイルしようとするとこのエラーが発生します。どのように私はこれを修正するのですか?そして、このケースで殺されるべきピッドを殺したユーザーのユーザー名を見つける方法はありますか?pidを使ってプロセスを強制終了し、システムコールでpidに結びついたユーザを見つけよう

kill_log/kill_log.c:2:24:致命的なエラー:signal.h:そのようなファイルまたはディレクトリがありません コンパイルが終了しました。 スクリプト/ Makefile.build:289:* [kill_log/kill_log.o]エラー1 のMakefile:968:ターゲットのためのレシピ 'k​​ill_log/kill_log.oは' は、[1]を作る失敗したターゲットのためのレシピ 'k​​ill_logは' に失敗しました作る:* [kill_log]エラーエラー・メッセージに基づいて

#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

2、あなたはsignal.hを逃しています。 Debianベースのシステムでは、libc6-devをインストールする必要があります。

ユーザー名の取得に関しては、getpwuidを試してみることができます。

関連する問題