当前位置: 首页 > 面试题库 >

将控制字符发送到Java中的外部进程

邵飞宇
2023-03-14
问题内容

我正在使用以下命令在ubuntu中连接“ / bin / bash”:

process = Runtime.getRuntime().exec(cmd);

这里的cmd是一个字符串,其中包含我从进程读取和写入的不同命令。
现在我遇到了一种情况,我使用ssh登录到远程机器,并且在将信息写入ext进程时,要从远程计算机注销,我必须发送如下控制字符:

CTRL + ]为了正常退出会话并返回我的本地计算机。假设cmd是String类型,我如何将此CTRLchracter 写入进程?


问题答案:

ASCII中的Control-]等效于035八进制。在Java中,您可以将其表示为“ \ 035”。

Writer writer = new OutputStreamWriter(process.getOutputStream());
writer.write("\035");
writer.flush();

它也等效于十进制值29,因此,如果您可以写一个值为29的字节,那么它也将起作用。

OutputStream os = process.getOutputStream();
os.write(29);
os.flush();

我认为Control-]与远程程序有关。您在谈论telnet吗?但是,写入“ exit \ n”也会关闭远程bash。

Writer writer = new OutputStreamWriter(process.getOutputStream());
writer.write("exit\n");
writer.flush();

显然,您也可以关闭,OutputStream它关闭远程进程的STDIN。

os.close();


 类似资料:
  • 我创建了基于JAVA SWT的GUI,它可以与外部C可执行文件进行交互。我的GUI使用ProcessBuilder调用这个c进程。在C进程可执行文件中,我重载了信号函数(CTRL C,CTRL D)。我的问题是如何从JavaSWTGUI向这个外部C进程发送CTRL C?我试过了。getRuntime()。链接中提供了exec((kill SIGINT pid):“如何将SIGINT信号从Java发

  • seleccion“对象它是一个实体,具有我从Ajax发送的JSON的一些属性,”seleccionados“是一个列表,保存接收到的数组,但当我发送它时,obj参数总是返回一个空对象,Ajax发送错误函数,我认为问题是我在向对象发送数组,但我不知道如何解决它 选择对象模型:

  • 目前,我正在通过外部URL检索数据,该URL使用PHP脚本并返回JSON值。工作很好。 但如何发送用于查询的字符串,以便在PHP脚本中执行以下操作: 注意:我不想使用凌空抽射。 我的AsyncTask扩展类,它当前不向URL发送任何值。

  • 在我们的节奏工作流程中,我们通常需要等待一定时间的外部事件才能继续(即电子邮件阅读、链接点击等)。 我想知道什么是将这些事件通知我们工作流程的最佳方式。信号是正确的方式,还是我们应该创建一个等待事件的活动? 根据我所看到的,我们需要创建一个信号通道,但是上下文在活动中不可用。

  • 问题内容: 我必须将数据从html页面(带有很少输入文本字段的简单形式)发送到页面控制器,然后再发送到数据库。我正在使用3.0版的百里香2.0.17。我搜索并检查了一些解决方案,但是没有用。也许有人遇到了同样的问题,并找到了一些好的解决方案。请帮忙。谢谢 问题答案: 如本教程所建议,你需要使用,并在中创建一个表单。 看起来像这样: 控制器: HTML: Foo.java: 希望这可以帮助。

  • 问题内容: 我正在构建Android应用程序的项目的C 方面。我需要一些信息(通过字符串和字符串数组)传递给Java应用程序(通过JNI)。我以前从未做过,相反方向的人没有C 的经验,并承认他们不能真正提供帮助。 我确实找到了以下代码(从这里开始) 但这对我来说毫无意义。通常,我不确定如何将其合并到程序的C ++端,而且我无法确切了解其工作原理。代码是否在执行该行时发出消息?还是在for循环中执行