1,首先要淡定。
2,在程序退出之后马上echo $?,获得返回数字R。
3,计算信号码和退出码:
R & 0x7f = signal_no
(R & 0xff00) >> 8 = exit_no
4,这时就知道程序何故退出了。
至于我的状况,就是没有处理SIGPIPE,what a shame.
Add the following code and the app will be fine:
struct sigaction sa;
sa.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &sa, 0);
Why here use sigaction() other than signal() ?
Someone said that in the latter case the designated signal handler may reume the default one when the signal was catched one time, so now you know why sigaction() was a better choice.