C调用系统命令ping崩溃日志

吾用ping测试,结果崩溃了,而且莫名其妙的.难道是晚上跑,内存用光了?

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./gh_manager thread false 1'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  malloc_consolidate (av=av@entry=0x7f8af8000020) at malloc.c:4167
4167    malloc.c: 没有那个文件或目录.
[Current thread is 1 (Thread 0x7f8ba1fff700 (LWP 25566))]
(gdb) backtrace
#0  malloc_consolidate (av=av@entry=0x7f8af8000020) at malloc.c:4167
#1  0x00007f8c5ec95cde in _int_malloc (av=av@entry=0x7f8af8000020, 
    bytes=bytes@entry=4096) at malloc.c:3450
#2  0x00007f8c5ec98184 in __GI___libc_malloc (bytes=bytes@entry=4096)
    at malloc.c:2913
#3  0x00007f8c5ec811d5 in __GI__IO_file_doallocate (fp=0x7f8af8000a00)
    at filedoalloc.c:127
#4  0x00007f8c5ec8f594 in __GI__IO_doallocbuf (fp=fp@entry=0x7f8af8000a00)
    at genops.c:398
#5  0x00007f8c5ec8e69c in _IO_new_file_underflow (fp=0x7f8af8000a00)
    at fileops.c:556
#6  0x00007f8c5ec8f60e in __GI__IO_default_uflow (fp=0x7f8af8000a00)
    at genops.c:413
#7  0x00007f8c5ec82c6a in __GI__IO_getline_info (fp=fp@entry=0x7f8af8000a00, 
    buf=buf@entry=0x7f8ba1ffd080 "ping -c 1 192.168.1.104", n=1023, 
    delim=delim@entry=10, extract_delim=extract_delim@entry=1, 
    eof=eof@entry=0x0) at iogetline.c:60
#8  0x00007f8c5ec82d78 in __GI__IO_getline (fp=fp@entry=0x7f8af8000a00, 
    buf=buf@entry=0x7f8ba1ffd080 "ping -c 1 192.168.1.104", 
    n=<optimized out>, delim=delim@entry=10, 
    extract_delim=extract_delim@entry=1) at iogetline.c:34
#9  0x00007f8c5ec81b7d in _IO_fgets (
    buf=0x7f8ba1ffd080 "ping -c 1 192.168.1.104", n=<optimized out>, 
---Type <return> to continue, or q <return> to quit---
    fp=0x7f8af8000a00) at iofgets.c:53
#10 0x00007f8c5ea10431 in ping_ip (ip=0x7f8ba1ffd530 "192.168.1.104")
    at gh_kit.cpp:88

解决办法:

  读取ping的结果时,不要用gets(),而是通过>输出到文件,然后读取这个文件。

上一篇:在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示


下一篇:阿里研究院启动2017年度淘宝村辅助认证活动(附表格下载)