无法执行 netcat

Can't execlp netcat

我正在尝试从 C:

执行以下命令

netcat 127.0.0.1 4444

这是我的代码:

#include <unistd.h>

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

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

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

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

看看这一行:

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

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

按照惯例,argv[0] 应该包含可执行文件的名称,第一个 "real" 参数是 argv[1],在您的例子中是“4444”。所以你所做的相当于

的shell

netcat 4444

正确的调用是:

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

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