java – JSL连接关闭后,“tail -f”进程不会退出

发布时间:2020-01-14 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了java – JSL连接关闭后,“tail -f”进程不会退出脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我使用JSch来拖尾远程计算机中的文件.但我发现程序退出后,
“tail -f”进程仍然存在于远程计算机中.
如果我删除“-f”参数,一切都OK.

我试过使用“sendSignal()”,但它不起作用.似乎OpenSSH没有实现该功能.

这是测试代码.

public static void main(String[] args) throws Exception {
    String usr = args[0];
    String host = args[1];
    String password = args[2];
    JSch jsch = new JSch();
    Session session = jsch.getSession(usr,host);
    String pwd = password;
    session.setPassword(pwd);
    Hashtable

有没有解决方案可以解决这个问题?

最佳答案
execCommand没有为通道分配控制tty,因此tail实际上正在写入管道.它将一直持续到向它发送更多数据(它将获得一个SIGPIPE).

最简单的解决方案是分配tty – 使用:

m_channelExec.setPty(true);

在m_channelExec.connect()之前的行;

哪个应该给你想要的行为.

总结

以上是脚本之家为你收集整理的java – JSL连接关闭后,“tail -f”进程不会退出全部内容,希望文章能够帮你解决java – JSL连接关闭后,“tail -f”进程不会退出所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。

脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ” ,选择关注!
精选程序员所需精品干货内容!

标签:javajava