GNU netcat 退出代码总是 1?

GNU netcat exit code always 1?

我正在尝试在脚本中使用 netcat 的 GNU 变体,但它 总是 returns 退出代码 1 即使一切正常。这是我的案例:

  1. 运行 nc -l 127.0.0.1 -p 7000
  2. 运行 nc 127.0.0.1 7000
  3. 在客户端 nc 上按 ctrl+c
  4. 服务器 nc 总是 returns 1

这让我无法在 bash 脚本中检测到套接字绑定错误。准确地说是来自 Arch linux 的 GNU netcat。当使用地址时,Arch 的 BSD netcat 不会因套接字绑定错误而失败,所以它也好不了多少...

看完 GNU Netcat 源代码后,我有一个坏消息要告诉你...

int c, glob_ret = EXIT_FAILURE;

变量glob_ret设置为EXIT_FAILURE(1)并且只在端口扫描模式或隧道模式下改变。该变量未设置为侦听模式,因此程序将始终以代码 1 退出。

您可以在此处查看 netcat.c 源文件:https://pastebin.com/fh66BPgg(函数 main