gpt4 book ai didi

无法执行 netcat

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:15 24 4
gpt4 key购买 nike

我正在尝试从 C: 执行以下命令

netcat 127.0.0.1 4444

这是我的代码:

#include <unistd.h>

int main() {
execlp("/usr/bin/netcat", "127.0.0.1", "4444", 0);
}

但是,我不断收到错误消息:错误:没有为连接指定端口

回答几个我觉得可能会出现的问题:

  • which netcat/usr/bin/netcat
  • 我已经尝试使用 execvp 并得到了相同的结果
  • 正常运行命令,即通过终端,成功(通常我也给出 -e/bin/bash 参数,但为了简单起见我省略了它。添加它不会改变结果。)

最佳答案

问题是,您的第一个参数是“4444”。为什么?

看这一行:

execlp("/usr/bin/netcat", "127.0.0.1", "4444", 0);

execlp()第一个 参数是要执行的二进制文件。其余参数将形成传递给进程的 argv[]-vector。

按照惯例,argv[0] 应该包含可执行文件的名称,第一个“真正的”参数是 argv[1],即“4444”你的情况。所以你所做的是在 shell 上的等价物

netcat 4444

正确的调用应该是:

execlp("/usr/bin/netcat", "netcat", "127.0.0.1", "4444", 0);

顺便说一句。 execlp() 的使用只有在调用没有完整路径的二进制文件时才有意义,因为它会自己寻找正确的路径(使用 PATH 环境变量)。否则,应使用 execl()。但它无论如何都会起作用。

关于无法执行 netcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55244669/

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