gpt4 book ai didi

c - snprintf 未创建正确的命令

转载 作者:行者123 更新时间:2023-11-30 20:11:01 26 4
gpt4 key购买 nike

当我使用 gdb 调试程序并键入 print 命令时,它会打印以下内容:

$4 = "sudo asterisk -rx \"pjsip show aor 101\"\000\000b\006@\000\000\000\000\000p\004@\00 ... and so on

通常它应该只将普通命令创建为字符?如果我是对的。这会导致另一个问题,因为 popen() 无法创建正确的流。

这是我的重要代码:

最佳答案

由于 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 保留堆栈空间

关于c - snprintf 未创建正确的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42284198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com