我正在尝试在脚本中使用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/

    10-10 22:52