linux - GNU netcat 退出代码总是 1?

标签 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 脚本中的套接字绑定(bind)错误。准确地说是来自 Arch Linux 的 GNU netcat。本地址正在使用时,Arch 的 BSD netcat 不会因套接字绑定(bind)错误而失败,所以它也好不了多少......

最佳答案

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

int c, glob_ret = EXIT_FAILURE;

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

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

关于linux - GNU netcat 退出代码总是 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47596950/

相关文章:

php - 在不同操作系统上处理 MySQL 的 BIT 数据类型

linux - 在 Linux 中使用 unzip 时遇到问题

linux - 在 qt linux 中保存配置

python - 通过转义必要的东西将 shell 脚本转换为一个衬里?

linux - Grep 命令 Linux 源字符串和目标字符串的排序

c - 为什么进程要处理阻塞的信号?

linux - 启动时的 Shell 脚本在 Raspberry pi 上不执行

Bash:执行变量的内容,包括管道

linux - 如何在 gitlab ci :bad substitution 中修复 bash

linux - 链接两个参数 - Shell 脚本