1、程序中包含popen()调用,在使用gdb调试时,gdb假死,定位到程序运行到popen
2、编写测试程序验证,确实如此,程序如下:
int main(int argc, char *argv[])
{
char buf[128];
FILE *pp;
printf("%s,%d\n", __FILE__, __LINE__);
if( (pp = popen("ls -l", "r")) == NULL ){
printf("popen() error!/n");
exit(1);
}
printf("%s,%d\n", __FILE__, __LINE__);
while(fgets(buf, sizeof buf, pp)){
printf("%s", buf);
}
printf("%s,%d\n", __FILE__, __LINE__);
pclose(pp);
printf("%s,%d\n", __FILE__, __LINE__);
return 0;
}
3、gdb日志
GNU gdb (GDB) 7.10.1
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
Th