根据Java程序返回的数据终止socat连接

问题描述

我有一个系统,它使用 Bash 脚本通过 socat 打开与本地 Java 应用程序的连接。访问它的 bash 行如下所示:

stty -icanon && socat -,echo=0 TCP4:localhost:8088

这是在循环中完成的,以根据需要继续重新生成 socat 进程。端口 8088 上的 Java 程序托管了一个带有各种命令的 CLI。

其中一个命令在执行时需要关闭 socat 连接。现在,该命令只是创建一个标志文件,每当即将启动该 socat 连接时,bash 脚本都会检查该文件。这意味着我可以在 socat 端按 Ctrl + C 来杀死 socat,然后当脚本尝试再次启动它时,它可以检查文件。但我希望在 Java 端执行的命令立即关闭 socat 连接,而不是要求用户按 Ctrl + C。

我正在努力找出一个控制流,它不仅需要 bash 脚本来轮询标志文件。我知道我可以只对 socat 任务进行后台处理,保存其 PID,并轮询标志文件以确定是终止、重生还是离开 socat 进程,但这听起来既不优雅又浪费。有没有更好的方法让 Java 应用程序接口与 socat 进程?有没有办法完全去掉标志文件中间人?

bash 脚本和 java 应用程序都运行在同一个 linux 系统上。解决方案可能包括对 bash 脚本、java 应用程序或两者的更改。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)