脳ざらし紀行


2006-08-13

_ UNIX のプロセスに関する問題

入門 OpenSSH』を読んでいたら、

eval `ssh-agent`

ではなくて、

ssh-agent bash

を使え、と書いてあった。そこで、~/.zlogin に

ssh-agent zsh

と書くようにした。こうすると、zsh は ssh-agent のサブプロセスとして実行され、ssh が必要とする SSH_AGENT_PID などの環境変数がサブプロセスへと継承される。はずである。zsh が終了すると、ssh-agent を終了する。

さて上のように ~/.zlogin に書いた状態でログインして pstree を見てみると、

init-+
     |-login---zsh---zsh-+-ssh-agent
                         `-pstree

となっている。おかしい。ssh-agent の子プロセスになっているはずの zsh が逆に親プロセスになっている。にもかかわらず、SSH_AGENT_PID などの環境変数は適切に設定されている。これはどうしてだろう。これが最初の問題。

ssh-agent のソースを読んでみた。答えは簡単で、ssh-agent は子プロセスではなく、親プロセスで execvp を実行しているんですね。子プロセスの方で、ssh-agent の仕事を引き受けている。だから、上のような pstree の表示になる。

では、次の問題。zsh が終了した時に子プロセスである ssh-agent は終了するだろうか。終了しないなら、どのような時に終了しないか。

本の画像

_ ヘッドホンとスピーカーの切替え

ワイヤレスヘッドホンを買おうと思った。だけど、ヘッドホンとスピーカーを切替えるのにコンポのところまで歩いていかないといけないんじゃあんまり便利にならないなあと思い直す。

リモコンひとつで、ヘッドホンとスピーカーを切替えることが出来るような何かって売ってないんですかね。

お名前:
E-mail:
コメント:
本日のリンク元

最近のコメント

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|04|05|
2011|04|
2012|03|07|
2013|01|02|07|
トップ «前の日記(2006-08-12) 最新 次の日記(2006-08-14)» 編集