当我使用gdb调试我的程序并输入print命令时,它会打印出来:
<property name="openjpa.DetachState" value="fetch-groups(DetachedStateField=false)"/>
Normaly它应该只是将char命令创建为char?如果我是对的。这导致了另一个问题,因为popen()无法创建正确的流。
这是我的重要代码:
答案 0 :(得分:2)
由于command
是一个数组(不是char *
),当你告诉gdb为print command
时,它会打印整个内容,包括尾随NUL字符后缓冲区中的任何内容。所以当你看到:
$4 = "sudo asterisk -rx \"pjsip show aor 101\"\000\000b\006@\000\000\000\000\000p\004@\00
^^^^ -- NUL character
它显示了snprintf放入缓冲区的内容,以及函数启动时堆栈内存中发生的任何随机内容以及为command
保留的堆栈空间