[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 メーリングリストの案内