GNU netcat 退出代码总是 1?

Lap*_*sio 4 linux bash shell exit-code netcat

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

  1. 跑步nc -l 127.0.0.1 -p 7000
  2. 跑步nc 127.0.0.1 7000
  3. 在客户端 nc 上按 ctrl+c
  4. 服务器 nc 始终返回 1

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

blu*_*112 6

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

int c, glob_ret = EXIT_FAILURE;
Run Code Online (Sandbox Code Playgroud)

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

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