资料出处:http://wff8785.blog.163.com/blog/static/89202270201161534551891/
#include <stdio.h>
FILE * popen(const char * command, const char * type)popen函数会通过fork产生子进程,然后从子进程中调用/bin/sh -c执行参数command指令,子进程退出的时候会发送SIGCHLD信号,如果父进程没对此信号处理,就会导致僵尸进程,因此建议有用到popen的都加个signal(SIGCHLD, SIG_IGN);
SIG_IGN表示忽略对信号SIGCHLD的处理
如果需要处理,可以将SIG_IGN换成函数指针,如:
int sig_exit(int sig_no)
{
}
signal(SIGCHLD, sig_exit);