17

カーネル モジュールのルーチンをトリガーしたユーザー プロセスの PID を取得するにはどうすればよいですかfile_operation.read(つまり、どのプロセスが読み取りを行っている/dev/mydevか)。

4

3 に答える 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 に答える