gpt4 book ai didi

c++ - 在 Ubuntu 上通过 C++ 的 system() 将输出与 SIPp 远程命令混淆

转载 作者:行者123 更新时间:2023-11-28 06:41:09 27 4
gpt4 key购买 nike

我在理解 system() 命令如何在 Ubuntu 上运行时遇到了一些麻烦。

我正在创建一个 C++ 程序来远程控制 SIPp 客户端 ( SIPp remotely controlling clients ) 并且几乎已经完成了该程序,但是我现在在测试它时遇到了一个问题。

我已经在我的 centOS VM 上测试过它,它运行完美,但现在我在我的 Ubuntu VM 上测试它,它甚至无法执行命令。

在 Ubuntu 的终端上,我可以运行 echo + >/dev/udp/127.0.0.1/8888 并且 SIPp 客户端将接受命令,但是,当我运行我的程序时(同样的事情)我得到一个 sh: 1: cannot create/dev/udp/127.0.0.1/8888: Directory nonexistent.

#include <stdlib.h>
int main(){
system("echo + >/dev/udp/127.0.0.1/8888");
return 0;//
}

上面的代码在 centOS 上工作得很好,SIPp 客户端接收并执行任务,但在 Ubuntu 上它给了我目录不存在的错误。

据我所知,它目前正在尝试读取 >,因为我试图输出一个文件,但是使用\> 转义 > 只会产生编译器错误。

warning: unknown escape sequence: '\>' [enabled by default]
system("echo + \>");
^

如果有人能给我指出正确的方向,我会成为一个快乐的露营者。

最佳答案

所以在四处搜索之后,我意识到这是因为访问/dev/udp 是一个 bash 函数,而 system() 是由 bin/sh 解释的。

将我的 system() 调用更改为 system("bash -c\"echo + >/dev/udp/localhost/8888\""); 解决了问题。

关于c++ - 在 Ubuntu 上通过 C++ 的 system() 将输出与 SIPp 远程命令混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25927548/

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