[英]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.