一般的な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