GNU netcat退出代码总是1?

时间:2017-12-01 15:50:46

标签: 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
  5. 这使我无法在bash脚本中检测到套接字绑定错误。准确地说是来自Arch linux的GNU netcat。当地址被使用时,用于Arch的BSD netcat在套接字绑定错误上没有失败,所以它也不是更好......

1 个答案:

答案 0 :(得分:3)

在查看GNU Netcat源代码后,我有一个坏消息......

int c, glob_ret = EXIT_FAILURE;

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

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