Tencent / phxpaxos

The Paxos library implemented in C++ that has been used in the WeChat production environment.
Other
3.36k stars 863 forks source link

tcp.cpp中为何要设置signal? #159

Open niukuo opened 5 years ago

niukuo commented 5 years ago

看起来是调试用到的?但是在编译时没办法通过设置环境变量CFLAGS=-DNDEBUG屏蔽掉,设置这几个signal有什么用意吗? https://github.com/Tencent/phxpaxos/blob/master/src/communicate/tcp/tcp.cpp#L101

phinphing commented 5 years ago

SIGPIPE和SIGALRM默认会abort http://man7.org/linux/man-pages/man7/signal.7.html, SIGCHLD防止僵尸进程,无需处理退出的子进程

niukuo commented 5 years ago

SIGPIPE和SIGALRM默认会abort http://man7.org/linux/man-pages/man7/signal.7.html, SIGCHLD防止僵尸进程,无需处理退出的子进程

phxpaxos自身会创建子进程吗

unixliang commented 5 years ago

不会创建线程,应该是调试时用的。 @niukuo signal对你的应用有影响吗?

niukuo commented 5 years ago

程序使用popen等方式调用外部命令时无法得知子进程已经结束

lynncui00 commented 5 years ago

SIGPIPE如果不处理的话,在出现一些网络错误的时候,会导致进程被杀。 具体可以看一下SIGPIPE的触发机制。