我试图在脚本中使用 netcat 的 GNU 变体,但它总是返回退出代码 1,即使一切正常。这是我的案例:
- 运行
nc -l 127.0.0.1 -p 7000
- 运行
nc 127.0.0.1 7000
- 在客户端 nc 上按 ctrl+c
- 服务器 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/