[英]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);
}
但是,我不断收到错误消息: Error: no ports specified for connection 。
回答几个我觉得可能会出现的问题:
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 上的等价物
网猫 4444
正确的调用是:
execlp("/usr/bin/netcat", "netcat", "127.0.0.1", "4444", 0);
顺便提一句。 execlp()
的使用仅在调用没有完整路径的二进制文件时才有意义,因为它本身会寻找正确的路径(使用 PATH 环境变量)。 否则,应使用execl()
。 但无论如何它都会起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.