Networking 为什么;netstat-a";不要立即退出,而是“退出”;netstat-n“;做

Networking 为什么;netstat-a";不要立即退出,而是“退出”;netstat-n“;做,networking,Networking,我已经检查了“-n”的功能 显示活动的TCP连接,但地址和端口号以数字表示,不尝试确定名称 但是我不明白为什么“-n”可以使netstat立即退出?通过快速检查,我看不到“-n”选项的描述与您的描述相同,而且它不能使netstat连续运行 由于您没有指定所使用的版本和确切命令,我尝试了RH7.6(net tools 2.10-alpha)附带的版本和源代码中的最新版本(net tools 3.14-alpha)。net工具源代码可以在github[1]中找到 由于找不到您描述的确切选项,我尝试了

我已经检查了“-n”的功能 显示活动的TCP连接,但地址和端口号以数字表示,不尝试确定名称
但是我不明白为什么“-n”可以使netstat立即退出?

通过快速检查,我看不到“-n”选项的描述与您的描述相同,而且它不能使netstat连续运行

由于您没有指定所使用的版本和确切命令,我尝试了RH7.6(net tools 2.10-alpha)附带的版本和源代码中的最新版本(net tools 3.14-alpha)。net工具源代码可以在github[1]中找到

由于找不到您描述的确切选项,我尝试了所有不需要参数的标志(没有组合)。据我所知,导致netstat不能立即退出的唯一选项是'-g'和'-c'-c'是有意义的,因为它是连续运行netstat的标志。对于'-g',它不像逐行读取/proc/net/igmp和/proc/net/igmp6文件那样明显。第一个文件读取速度很快,但igmp6文件需要更长的时间(每~1秒1行)。“-g”选项并不是真正连续的,只是需要很多时间才能完成

从代码来看,持续执行的唯一原因是(在代码中出现4次):

“i”是函数的返回代码,“break”命令用于从无限for循环中断,因此基本上只有在设置了flag_cnt(仅在提供了“-c”时发生)并且之前的命令没有错误时,代码才会连续运行

对于上述具体问题,可能有以下几个原因:

  • 该选项涉及从文件中读取数据,需要很长时间才能完成,但实际上并不是连续的
  • 给定选项和flag_cnt之间存在相关性,这会导致设置flag_cnt
  • 有一个wait_continous()调用,它不符合上述条件
  • 正如我所说,我无法在原始问题中重现该问题,也找不到任何具有上述描述的标志。此外,除了'-c'之外,没有任何标志导致netstat连续运行

    如果你仍然想弄明白这一点,我建议你看看你的代码,或者至少指定你使用的NetTools版本。内核版本也很重要,因为由于缺少内核支持,一些代码可能会被编译出来

    [1]

    if (i || !flag_cnt)
       break;
    wait_continous();