【问题标题】:GNU netcat exit code always 1?GNU netcat 退出代码总是 1?
【发布时间】:2017-12-01 15:50:45
【问题描述】:

我正在尝试在脚本中使用 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 不会因套接字绑定错误而失败,所以它也好不了多少......

【问题讨论】:

  • 似乎客户端终止是服务器失败的一个很好的理由。如果在客户端使用 ctrl+d 会发生什么?
  • 在 GNU netcat 上 - 什么都没有。

标签: linux bash shell exit-code netcat


【解决方案1】:

看完了 GNU Netcat 源代码,有个坏消息要告诉你……

int c, glob_ret = EXIT_FAILURE;

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

您可以在这里查看 netcat.c 源文件:https://pastebin.com/fh66BPgg (function main)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多