カーネル モジュールのルーチンをトリガーしたユーザー プロセスの PID を取得するにはどうすればよいですかfile_operation.read
(つまり、どのプロセスが読み取りを行っている/dev/mydev
か)。
user1592383
質問する
33487 次
3 に答える
24
読み取り関数が実行されているときは、システム コールを発行したプロセスのコンテキストで実行されています。current
したがって、使用できるはずcurrent->pid
です。
于 2012-08-11T15:01:10.180 に答える
14
最近では、sched.h でいくつかのヘルパー関数が定義されています。pid の場合、以下を使用できます。
pid = task_pid_nr(current);
現在のタスクの pid を取得します。
include/linux/sched.h
これはv3.8の時点でのコメントです。
さまざまな名前空間から見たタスクのさまざまな pid を取得するヘルパー
- task_xid_nr() : グローバル ID、つまり init 名前空間から見た ID。
- task_xid_vnr() : 仮想 ID、つまり、現在の pid 名前空間から見た ID。
- task_xid_nr_ns() : 指定された ns から見た ID;
- set_task_vxid() : 仮想 ID をタスクに割り当てます。
include/linux/pid.h の pid_nr() なども参照してください。
于 2013-03-21T07:22:18.710 に答える