実行中のプロセスをすべてpid、ppid、comm、およびsizeでリストしたいと思います。次のコードはppidとsizeを除いて動作します。cを使用してすべてのプロセス情報をリストアップ
--code -
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/unistd.h>
#include "sched.h"
#include "sched1.h"
/* This function is called when the module t is loaded. */
int process_init(void)
{
printk(KERN_INFO "lOADING MODULE \n");
printk(KERN_INFO "PID \t PPID \t PNAME \t SIZE \n");
struct task_struct *task;
for_each_process(task)
{
printk(KERN_INFO "%d \t %d\t %s \t %d \n", task->pid,task->ppid,task->comm,task->sz);
}
return 0;
}
だろう 'のexeclp( "PS"、 "PS"、 " - EF"、(char型*)NULL);'仕事あなたの目的の代わりにそのラインの –
のため? –
@ishyfishy彼が 'printk'を使用したことは、これがカーネル内部で実行されていることを意味し、ユーザプロセスでは実行されていません。彼はカーネルから 'execlp'を呼び出すことはできません。 – Barmar