2

私は組み込みLinuxに取り組んでいます。カーネル空間 (カーネル モジュール) から特定のユーザー空間プロセスにシグナルを送信する必要があります。PID は動的であるため、このプロセスがシグナルを送信するには pid を取得する必要がありますか? カーネル空間の名前からプロセスの PID を取得するにはどうすればよいですか?

4

2 に答える 2

4

ユーザー空間のすべてのユーザープロセスには、カーネル空間に関連付けられた task_struct (循環リンクリスト) があります。これにはすべてのプロセスの詳細が含まれているため、それを見てプロセス名を確認できます。

書き方例

for_each_process(task) {

       /* compare your process name with each of the task struct process name*/    

        if ( (strcmp( task->comm,your_process_name) == 0 ) ) {

              /* if matched that is your user process PID */      
              process_id = task->pid;
           }
}
于 2012-06-12T12:07:57.400 に答える