终端上的 Shell 命令与 system() 调用

终端上的 Shell 命令与 system() 调用

我正在使用 NMAP 在主机上进行端口扫描。当我在终端上运行以下命令时,大多数情况下它会在一分钟内给出结果。

$ nmap -p 1-65535 10.180.5.237 | awk --posix '{ if ($1 ~ /^[0-9]/) print $0+0}'
22
80
2404

但是如果我使用运行相同的命令系统()在 C 程序中调用它需要不确定的时间,我说它是不确定的,因为我给出了超过 7 分钟但没有输出,所以停止了该过程。

if ((system("nmap -p 1-65535 10.180.5.237 | awk --posix '{ if ($1 ~ /^[0-9]/) print $0+0}' > file_openPorts")) == -1) {
      fprintf(stderr, "ERROR : NMAP port scan error...\n");
      return 1;
 }

为什么会这样,有什么解决办法吗?

相关内容