2009年8月31日月曜日

khelper

 

一般的なLinuxがどのようなプロセスを立ち上げて動作しているかを、
ちょこちょこチェックしています。

・・・趣味ではなくて仕事です。

仕事ですよ?

 

そこで、気になったのがkhelperの存在です。

頭に”k”がついてるものは大抵kernel関連で、重要なものであることは分かります。
openSUSEでもkthreadの少し後のタイミングで起動しているようで、PIDは一桁です。
(私の環境では6でした)

これはLinuxなら必ず入っているものです!!
なーんてこと言っても説明にならないので、何をやっているものなのかを調べてみました。

 

Kenerl 2.6.21のソースで調べてみると、kmod.hにこんなマクロがありました。

static inline int
call_usermodehelper(char *path, char **argv, char **envp, int wait)

これはどうやら、Kernelからusermodeのプログラムを実行する為のhelperのようです。

これを使用すると、khelperが内容を受け取って、コマンドを読み取り→プロセス実行という
流れでusermodeのプログラムを実行しているようですね。

USBデバイスが挿入された時に起動するアプリケーション等は、きっとこれを使ってるのでしょうね。
実際にアプリから見えるのは、HALがD-BUSメッセージを出すなどの形なんでしょうけれども(・・;

 

今度、遊んでみようかな。

オリジナルのデバイスから、任意のタイミングでアプリを起動するというのを、
直接できるなら、特殊な装置作る際には有用かもしれない。

・・・ほんとはそーいうのをD-BUSメッセージで渡して受け取るのかなぁ。
熟練者からのツッコミが怖いですw

0 件のコメント:

コメントを投稿