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

发送Ctrl-C以通过Java打开

陈泰宁
2023-03-14
问题内容

在Windows操作系统下。

我通过Runtime.getRuntime()。exec()启动一个子进程;我想向进程发送“ ctrl -c”以停止它。

我用Runtime.getRuntime()。exec(“ ping google.com -n
100000”);做了一个小例子。可以在以下位置找到代码:http :
//pastebin.com/f6315063f

到目前为止,我尝试通过Process outputStream发送char‘3’(Ctrl-C字符)。

这是一些代码:

 cmd = re.exec("ping google.com -n 10000"); 
 out = new BufferedWriter (new OutputStreamWriter(cmd.getOutputStream()));
 input =  new BufferedReader (new  InputStreamReader(cmd.getInputStream()));


 char ctrlBreak = (char)3;
 //Different testing way to send the ctrlBreak;
 out.write(ctrlBreak);
 out.flush();
 out.write(ctrlBreak+"\n");
 out.flush();

我不想终止该进程,我只想发送Ctrl-C信号。我怎样才能做到这一点?


问题答案:

我相信Ctrl-
C被外壳捕获并转换为信号(SIGINT),该信号被发送到基础进程(在本例中为您生成的进程)。

因此,我认为您需要获取进程ID,然后向该进程发送适当的信号。



 类似资料:
  • 然而,当我通过UDP实现它时,我错过了这种方法

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

  • 问题内容: 我正在使用Paramiko调用shell,以便通过ssh连接使用CLI。此CLI的问题在于,如果我没有特别使用CTRL + C关闭它,则在不重新启动系统的情况下将无法再次打开该程序。 我尝试了以下命令: 还有另一种称呼方式吗?再次,我使用建立了SSH连接,然后使用调用了外壳,现在我需要向该外壳发送CTRL + C来关闭外壳(不是ssh连接) 问题答案: 在第二个示例中,您处在正确的轨道

  • 问题内容: 我的Java应用程序使用JNI调用用C编写的库。此本地库将错误记录到stderr,但是我想以某种方式通过我的log4j记录器重定向错误流。这可能吗? C库是外部的-我没有源,所以无法更改它。 谢谢 问题答案: 注意:我尚未尝试此答案;YMMV。 POSIX方法将更改与流关联的基础文件。如联机帮助页所述:“ freopen()函数的主要用途是更改与标准文本流(stderr,stdin或s

  • 如何通过Azure从我的UWP-App向不同设备上的应用程序的其他实例发送推送通知? 以下是注册设备以接收推送的说明。(这是可行的)第二部分是关于如何在控制台应用程序上发送推送(这也是可行的)https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-store-dotnet-get-star

  • 我想在登录时向特定用户发送通知,我使用Firebase消息,我可以通过控制台发送通知,但我想使用发送到主题和request以Swift代码发送此通知。当我在postman中运行代码时,我无法实现http请求以发送通知。我有以下错误: 请求缺少身份验证密钥(FCM令牌)。请参阅FCM文档的“认证”部分,网址为https://firebase.google.com/docs/cloud-messagi