GNU netcat 退出代码总是 1?
Posted
技术标签:
【中文标题】GNU netcat 退出代码总是 1?【英文标题】:GNU netcat exit code always 1? 【发布时间】:2017-12-01 15:50:45 【问题描述】:我正在尝试在脚本中使用 netcat 的 GNU 变体,但它总是返回退出代码 1,即使一切正常。这是我的案例一步一步:
-
运行
nc -l 127.0.0.1 -p 7000
运行nc 127.0.0.1 7000
在客户端 nc 上按 ctrl+c
服务器 nc 总是返回 1
这让我无法在 bash 脚本中检测到套接字绑定错误。确切地说,它是来自 Arch linux 的 GNU netcat。使用地址时,用于 Arch 的 BSD netcat 不会因套接字绑定错误而失败,所以它也好不了多少......
【问题讨论】:
似乎客户端终止是服务器失败的一个很好的理由。如果在客户端使用 ctrl+d 会发生什么? 在 GNU netcat 上 - 什么都没有。 【参考方案1】:看完了 GNU Netcat 源代码,有个坏消息要告诉你……
int c, glob_ret = EXIT_FAILURE;
变量glob_ret
设置为EXIT_FAILURE
(1) 并且仅在端口扫描模式或隧道模式下更改。该变量未设置为侦听模式,因此程序将始终以 1 代码退出。
您可以在这里查看 netcat.c 源文件:https://pastebin.com/fh66BPgg (function main
)
【讨论】:
以上是关于GNU netcat 退出代码总是 1?的主要内容,如果未能解决你的问题,请参考以下文章