Tag: 进程

运行可执行文件,然后等待该特定的exe文件不再运行

我想运行一个AHK可执行文件然后让java等待该可执行文件在它的脚本结束时终止它自己的进程然后继续,是否有一个函数来监视特定的exe是否正在运行? 如果它正在运行,等到它停止了? 例如在AHK你可以这样做: IfExist, Appname, { insert code } 我会用AHK来做这个项目,但是因为AHK变量如此脆弱而且递增我无法让它工作它的IF和Else语句正确 或者如果可能的话,我怎样才能使Java暂停一段时间 所有即时通讯真正寻找的是一个简单的代码来运行.exe和一些代码来等待它不存在

从Java的processbuilder执行的ffmpeg不会在Windows 7下返回

我试图建立一个调用ffmpeg二进制文件的ProcessBuilder。 我的问题是调用它,它在MacOs,Ubuntu和WindowsXp下完美返回,但在Windows7下,waitFor()永远不会返回。 在Windows 7下有没有类似的经验? 任何帮助,将不胜感激! 我的命令: ProcessBuilder pb = new ProcessBuilder( ); pb.command( “C:\\Windows\\System32\\cmd.exe”, “/c”, “c:\\ffmpeg\\bin\\ffmpeg.exe”, “-version” ); 试过这些: pb.command( “c:\\ffmpeg\\bin\\ffmpeg.exe”, “-version” ); pb.command( “C:\\Windows\\System32\\cmd.exe”, “/c”, “start c:\\ffmpeg\\bin\\ffmpeg.exe -version” ); 结果是一样的。 🙁

从另一个进程的输出流中读取

我想在我的Java程序中读取c-Application的输出流。 iremoted (可在此处获取: http : //osxbook.com/software/iremoted/download/iremoted.c )是一个C-Application,如果按下Apple Remote遥控器上的按钮,它会输出单独的行,例如“0x19被按下”。 如果我启动iremoted程序,一切都很顺利,每次按下按钮,这些单独的行都显示在我的屏幕上。 现在我想在我的Java应用程序中读取c-application的输出流来处理Java项目中Apple Remote的输入。 不幸的是,我不知道为什么没有投入资产 ? 我尝试使用一个简单的HelloWorld.c程序,我的程序在这种情况下按预期响应(打印出HelloWorld)。 为什么它不适用于iremoted计划? public class RemoteListener { public void listen(String command) throws IOException { String line; Process process = null; try { process = Runtime.getRuntime().exec(command); } catch (Exception e) { System.err.println(“Could not execute program. Shut down now.”); System.exit(-1); } Reader inStreamReader = new […]

如何杀死runtime.exec?

我在我的jframe中使用下面的代码,以便通过java程序执行shell脚本,但是当我实现其他方法来停止运行过程时,此方法被第一个阻止,我无法停止我的程序。 所以我要杀死新进程,问题是如何获取进程的pid以及如何将其置于后台,以便杀死它。 public static void execShellCmd(String cmd) { try { testPath = getPath(); System.out.println(cmd); Runtime runtime = Runtime.getRuntime(); process = runtime.exec(new String[] { “sh”, testPath + “/install.sh”, cmd, “&” }); int exitValue = process.waitFor(); value = exitValue; System.out.println(“exit value: ” + exitValue); BufferedReader buf = new BufferedReader(new InputStreamReader( process.getInputStream())); String line = “”; BufferedWriter bufferedWriter […]

如何将字符串发送到终端而不必将其作为标准命令?

我正在编写一个Java程序,需要使用终端命令才能工作。 我的function基本上是这样的: public void sendLoginCommand() throws IOException { System.out.println(“\n————Sending Login Command————\n”); String cmd=”qskdjqhsdqsd”; Runtime rt = Runtime.getRuntime(); Process p=rt.exec(cmd); } public Process sendPassword(String password) throws IOException { System.out.println(“\n————Sending Password————\n”); String cmd=password; Runtime rt = Runtime.getRuntime(); Process p=rt.exec(cmd); return p; } public void login(String password) throws IOException { sendLoginCommand(); Process p = sendPassword(password); System.out.println(“\n————Reading Terminal Output————\n”); […]

如何检查进程是否正在运行

ProcessBuilder pb = new ProcessBuilder(“notepad”); Process p = pb.run(); System.out.println(“Notepad is closed”) 上面的代码运行正常并打开记事本。 但是,在手动关闭记事本窗口之前,不会打印print语句。 这是因为Java等待进程终止。 无论如何我可以打开一个进程并检查窗口是否已加载?

在java中执行外部程序并传递命令

我有这个国际象棋引擎Rybka.exe,我必须在java中执行以下是一个如何运行Rybka的例子:一旦你点击它,控制台就会打开并等待输入。 那么你输入“uci”并按Enter键等待它加载(大约1秒)然后你必须再输入几行作为选项和东西。 问题是我不知道如何将这些命令从java传递给Rybka。 事实是,这些命令需要一次输入一个,因为你必须等待一些命令才能执行。 这就是我试图打开它的方式。 码: Process p1 = Runtime.getRuntime().exec(“Rybka.exe”); 这是有效的,因为您可以看到Rybka.exe在任务管理器中处于活动状态,但我不知道如何将命令传递给它。

在Java中将控制特征发送到外部进程

我在ubuntu中连接到“/ bin / bash”使用: process = Runtime.getRuntime().exec(cmd); 这里cmd是一个带有不同命令的String,我从进程读取和写入。 现在我遇到了一种情况,我使用ssh登录远程机器人,同时读取写入信息到ext进程,为了从远程机器登出,我必须发送控制字符,如: CTRL + ]以便优雅地注销会话并返回本地计算机。 假设cmd是String类型,我如何将此CTRL字符写入进程?

Runtime.getRuntime()。exec(“C:\ cygwin \ bin \ bash.exe”)没有输入读取

我正在尝试执行一个新进程并从Java中读取其输入流。 我已成功使用Runtime.getRuntime()。exec(String)来启动和接收来自多个进程的输入。 但是,当我尝试在某些其他进程上使用exec时,输入流的read方法会阻塞,并且看起来没有输入。 对于某些进程,可能导致输入流为空的原因是什么? 具体来说,我想知道为什么bash.exe没有输出任何东西。 我写了一个JUnit测试用例来演示这个问题: import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import junit.framework.TestCase; public class TestExec extends TestCase { public void testExec() throws IOException { List threads = new ArrayList(); // Create a process for each of the commands and make sure that // it outputs at least one line […]

ProcessBuilder在Process可以找不到指定的文件

我试图从Java程序运行一个jar文件,我成功使用getRuntime() : Process processAlgo = Runtime.getRuntime().exec(“java -jar “+algoPath); 但是当我尝试使用ProcessBuilder我得到的The system cannot find the file specifiedexception: ProcessBuilder builder = new ProcessBuilder(“java -jar ” + algoPath); Process processAlgo = builder.start(); 我试图更改指定文件的位置,并指示其完整路径,但它不起作用。 什么可能导致问题?