簡體   English   中英

無法執行 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);
}

但是,我不斷收到錯誤消息: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM