[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:04373] zsh and Broken pipe
- From: Kaz Sasayama <Kaz.Sasayama@xxxxxxxxxxxxxxx>
- Subject: [debian-devel:04373] zsh and Broken pipe
- Date: Thu, 16 Jul 1998 14:52:43 +0900
- X-attribution: Kaz
- X-emacs: Emacs 20.2, MULE 3.0 (MOMIJINOGA)
- X-ml-info: If you have a question, send a mail with the body "# help" (without quotes) to the address debian-devel-ctl@debian.or.jp
- X-ml-name: debian-devel
- X-mlserver: fml [fml 2.1A#45]; post only from members
- Message-id: <2mg1g2uyuc.fsf@xxxxxxxxxxxxxxxxxxxxxxx>
- X-mail-count: 04373
- X-mailer: Semi-gnus 6.4.0 (based on Gnus 5.6.11; for SEMI 1.5)
zshを使ってるとdpkg-sourceなどが正常に動作しない問題で、調査
してみました。
現象としては、子プロセスがBroken pipeのエラー (EPIPE) により
エラー終了してしまって、親が処理を中断してしまうというもので
す。bashから起動すると全く問題ありません。
簡単なテストプログラムを作って調べたところ、zshから実行され
たプロセスでは、SIGPIPEハンドラーがSIG_IGN (無視) になってい
るのが分かりました。一方、bashから同じプログラムを実行した場
合は、SIG_DFLでした。
マニュアルによると、SIGPIPEのハンドラーをSIG_IGNにすると、切
れたパイプに対するwriteがEPIPEのエラーを起こすようになります。
つまり、EPIPEを特別扱いにしていない限り、多くのプログラムは
エラー終了することになります。
さて、この問題の回避策ですが、結論からいえば、trapコマンドで
適当なハンドラーを設定するだけでした。とりあえずこちらではう
まく動いています。
参考にでもなれば。
--
ささやま <Kaz.Sasayama@xxxxxxxxxxxxxxx> / 有限会社ハイパーコア
「日本で最初のDebian GNU/Linuxコンサルタント」
* <URL:http://www.debian.org/consultants.html#Japan> を参照