[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[postfix-jp:02030] Re: local配送時の処理(alias展開とか)並列性
- Subject: [postfix-jp:02030] Re: local配送時の処理(alias展開とか)並列性
- From: Toyohiko Nagai <nagai@xxxxxxxxxxxx>
- Date: Thu, 12 Sep 2002 02:30:26 +0900 (JST)
永井@シリウスです。
>>>>>> YOSHIMURA Keitaro <ramsy@xxxxxxxx> wrote:
どうもです。
> > ちなみに、上記のスクリプトをプログラムに置き換えてもだめでし
> > た。たとえば実行直後に stdout をfclose して、stdout を
> > fopen("/dev/null", "w" ) と差し換え、すかさず fork ->
> > exec(sleep 20)する、とかいうのも試してみましたが、状況は変わり
> > ませんでした。
>
> outだけじゃ足らないです。std{in,out,err} 全部閉じる必要があります。
ありがとうございます。それでした。stderrまで閉じる必要がある
ようです。stdin のほうは必要ないようです。私も池田さんのご指摘
があったときに、せめて stderr ぐらいは試すべきでした。申し訳な
いです > 池田さん
> あと、setsid(8) しましたか?
> forkだけでは不十分で、縁切りしないとダメだと思います。
このプログラムはお初にお目にかかります。こういう便利なものが
あるんですか。勉強になりました。
shell script でやる場合については、
#!/bin/sh
exec setsid 時間のかかるコマンド 引数... >/dev/null 2>&1
というのを用意すれば良さそうです。(もちろんexecの後は実行され
ないんで、前後になにか必要処理ある場合はそれなりに細工すること
になるとは思います)
あと、postfix のこのような動作の理由に関しては、ソースを見て
なんとなく納得しました。この理由でいいのかどうかわかりませんけ
ど、waitpid 使ってるんですね。実際に -1 で waitpid していると
ころもあるみたいなんで、そういうことなんですかね。
(spawn_command.c とかが今回のと直接関係あるのかもしれませんが、
pid に最終的に何を設定しているかの判定までは、面倒になったので
みてません)
ようやく気になってたものがクリアーになったような気がします。
今やっているへんてこりんな逃げ方も捨てることができそうです。
池田さん、吉村さん、どうもありがとうございました。
----
Toyohiko Nagai.
- References
-
- [postfix-jp:02027] Re: local配送時の処理(alias展開とか)並列性, IKEDA Nozomu
- [postfix-jp:02028] Re: local配送時の処理(alias展開とか)並列性, Toyohiko Nagai
- [postfix-jp:02029] Re: local配送時の処理(alias展開とか)並列性, YOSHIMURA Keitaro
[検索ページ]
[Postfix-JP ML Home]