user@user-laptop:~$ ps -ef |grep defu
user 17876 17840 0 Oct30 ? 00:00:00 [scim]
ちなみに親プロセスはx-session-manager
user@user-laptop:~$ ps -ef |grep 17840
user 17840 3824 0 Oct30 ? 00:00:00 x-session-manager
Ubuntu 6.10なのだが、ネットで調べてもはっきりした答えがないので、調べてみることにした。
どうも 以下の流れで実行されているようである。
/etc/X11/Xsession
/etc/X11/Xsession.d/90im-switch
/etc/X11/xinit/xinput.d/scim ← XIM変数にscimを設定しているだけ
うーん、ようく見てみると
FileName /etc/X11/Xsession.d/90im-switch
: :
# execute XIM_PROGRAM
[ -n "$XIM_PROGRAM" -a -x "$XIM_PROGRAM" ] && eval "$XIM_PROGRAM $XIM_ARGS &" || true
どうもこの行でscimを起動しているようである。
えーーと XIM_PROGRAM .... & ←おおお &で起動しているではないか!!
でもって /etc/X11/xinit/xinput.d/scim ではXIM_ARGS="--daemon" をセットしているので、自分でデーモンになってしまう。
ということは、最初に起動されたscimプロセスがぬけがらでdefunctになるんだねぇ。
じゃあということで /etc/X11/xinit/xinput.d/scim を以下の様に修正した。
#XIM_ARGS="--daemon"
XIM_ARGS=""
早速ログアウトしてログインしてみたが、defunctなくなっていました。めでたしめでたし。
でもdefunctでもちゃんと動くだろって??
メモリ上(スワップされてしまうが)に残ってしまうので、ケチな僕としては許せないんだねぇ。
それでは。