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:ターゲットのためのレシピ 'kill_log/kill_log.oは' は、[1]を作る失敗したターゲットのためのレシピ 'kill_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;
}
RHELベースのLinuxでは、 '/ usr/include/signal.h'が' glibc-headers'によって提供されています。 'readproc()'を使ってプロセステーブルを読み込み、興味のある 'PID'を取得することができます。そして、 'getpwuid()'を使ってprocエントリにある 'uid'を変換します。 – alvits