加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 01:03:19 所属栏目:Java 来源:网络整理
导读:我使用JSch来拖尾远程计算机中的文件.但我发现程序退出后, “tail -f”进程仍然存在于远程计算机中. 如果我删除“-f”参数,一切都OK. 我试过使用“sendSignal()”,但它不起作用.似乎OpenSSH没有实现该功能. 这是测试代码. public static void main(String[]

我使用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()之前的行;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读