[Armadillo:08282] Re: Armadillo-460 からPPPoEを使用する方法

Yasuhisa Nakamura email@hidden
2012年 8月 30日 (木) 21:35:33 JST


中村です。

[Armadillo:08281]で
> ただ・・・PPPoEを使ったときpppdサーバに問題があって、
> pppdのソースにパッチを当てています。
>
> 問題とは・・・
> PPP回線を切るためにpppdをkillすると、killを発行した
> プロセスまで落ちてしまう、という問題です。

と書きましたが、正しくない記述でした。
「killを発行したプロセスまで落ちてしまう」ではなく、
「pppdを起動した親プロセスまで落ちてしまう」です。

pppdを起動した親がpppdの状態を監視し、不要になったら
その親がpppdをkillして回線切断、という処理をしていましたので、
親=killを発行したプロセス、なのですが・・・

cgiからpppdを起動/終了しときには、lighthttpd全体が
終了してしまいました。

この対策は次のようにしました。

--- user/pppd/ppp-2.4.4/pppd/main.c-orig
+++ user/pppd/ppp-2.4.4/pppd/main.c
@@ -651,8 +651,12 @@
 static void
 setup_signals()
 {
     struct sigaction sa;
+
+    // kill_my_pg()でプロセスグループをkillするとき、
+    // 親まで殺してしまわないように、新しいプロセスグループを作る。
+    setpgid(0, 0);

     /*
      * Compute mask of all interesting signals and install signal handlers
      * for each.  Only one signal handler may be active at a time.  Therefore,

-- 
なかむら





armadillo メーリングリストの案内