Tag: exec

调用它几百次后,Java Runtime.getRuntime()。exec()失败

我有一个Java程序执行Runtime.getRuntime()。exec(“ls -l”); 很多次,一次为系统中的每个目录。 我的测试系统有超过1,000个目录和Runtime.getRuntime()。exec(“ls -l”); 似乎在480个目录之后出错了。 我得到的错误消息是“运行exec()时出错。命令:[ls,-l]工作目录:null环境:null”。 我猜它已经耗尽了一些必需的系统资源或者是吗? 有没有办法处理所有目录而不会出错? 答案的相对评论: 我应该澄清一下我使用的是Android SDK的adb.exe。 我想在不同的目录上多次执行Runtime.getRuntime()。exec(“adb shell ls -l”)之类的东西。

Runtime.exec和Android的问题

当我在我的Android设备上使用Runtime.exec时,我遇到了一个问题,而且无法弄清楚它为什么会发生… 这是我做的测试的一个例子: public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Runtime runtime = Runtime.getRuntime(); for(int i=0; i< 20; i++){ Log.d("TESTEXEC", "EXEC N°"+i+" : BEGIN"); try { Process process = runtime.exec("/system/bin/ps"); process.getErrorStream().close(); process.getOutputStream().close(); process.getInputStream().close(); process.waitFor(); } catch (Throwable e) { e.printStackTrace(); } Log.d("TESTEXEC", "EXEC N°"+i+" : END"); } } } […]

使用Java中的JSch exec从ArrayList执行命令列表

使用JSch“exec”通道,我连接到远程服务器并执行命令。 我不能做的是执行存储在ArrayList中的命令列表。 我使用for循环将每个元素传递给.setCommand(elem); 但由于一些奇怪的原因,只有最后一个命令被执行。 ArrayList lists = new ArrayList(); lists.add(“hostname”); lists.add(“df -l”); Channel channel=session.openChannel(“exec”); for (String elem : lists){ ((ChannelExec)channel).setCommand(elem); } 完整代码 public class Exec{ public static void main(String[] arg){ try { JSch jsch=new JSch(); String host=null; if(arg.length>0){ host=arg[0]; } else{ host=JOptionPane.showInputDialog(“Enter username@hostname”, System.getProperty(“user.name”)+ “@localhost”); } String user=host.substring(0, host.indexOf(‘@’)); host=host.substring(host.indexOf(‘@’)+1); Session session=jsch.getSession(user, host, 22); UserInfo […]

使用Runtime.getRuntime()。exec从定义的目录执行文件

我只想从特定文件夹执行我的文件。 在我的情况下/ data / data / my-package / files /。 所以我试过: Process process2=Runtime.getRuntime().exec(“cd /data/data/my-package/files/”); process2.waitFor(); process2=Runtime.getRuntime().exec(“./myfile”); 它不起作用。 请有人告诉我正确的方法。 谢谢

用Java运行bat文件并等待2

这是我的另一个问题的后续问题: 用Java运行bat文件并等待 我将此作为一个单独的问题发布的原因是我已经问过的问题得到了正确回答。 从我的一些研究中我的问题是我的案例所独有的所以我决定创建一个新问题。 请继续阅读这个问题,因为它们密切相关。 运行建议的代码会在waitFor调用时阻塞程序。 经过一些研究后,我发现waitFor方法会阻止你的进程是否有需要被处理的输出,所以你应该首先清空输出流和错误流。 我做了那些事,但我的方法仍然阻止。 然后我找到了一个简单循环的建议,在等待exitValue方法返回进程的退出值并处理抛出的exception(如果不是),暂停一小段时间以便不占用所有CPU。 我这样做了: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Test { public static void main(String[] args) { try { Process p = Runtime.getRuntime().exec( “cmd /k start SQLScriptsToRun.bat” + ” -UuserName -Ppassword” + ” projectName”); final BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); final BufferedReader error = new […]

我们的Java程序的外部程序

如何用Java编写将执行另一个程序的程序? 此外,该程序的输入应该从我们的程序中提供,该程序的输出应该写入文件中。 这是我获取输出的一小部分代码: Process p = Runtime.getRuntime().exec(“C:\\j2sdk1.4.0\bin\\helloworld.java”); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); while ((line = input.readLine()) != null) System.out.println(line); input.close(); 这是我的代码集,但这会引发IOException 。

从java代码运行shell脚本

我几乎已经死了试图解决这个问题。有人能帮帮忙吗?拜托? 以下是代码: import java.io.*; import java.lang.Runtime; import java.util.*; public class WORKBRO { public static void main(String args[]) { try { String target = new String(“/home/dhirendra.panwar/Desktop/test.sh”); Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(target); } catch (Throwable t) { t.printStackTrace(); } } }

在Java中使用Runtime.exec()

你需要在Java中做什么才能让Runtime.exec()运行路径上的程序? 我正在尝试运行我已放入路径的gpsbabel(/ usr / local / bin)。 public class GpxLib { public static void main(String[] args) { try { Runtime r = Runtime.getRuntime(); Process p = r.exec(“gpsbabel -i garmin -f usb: -o gpx -F -“); InputStream is = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); while (true) { String s = br.readLine(); if (s == […]

Java Runtime exec()无法正确转义字符

这可能已经在之前得到了解答,但那是关于unicode的,我不认为这是unicode(它是ASCII,所以……)。 当我在终端中执行此操作时,没有任何问题 vboxmanage setextradata “Test Machine” “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort” 2222 但是当我在Java中使用以下内容时 Runtime.getRuntime().exec(“vboxmanage setextradata \”Test Machine\” \”VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort\” 2222″); 它返回一个错误:unregistered vm’“TestMachine”’ 其中包含空格的参数(如Test \ Machine)也是如此,然后它不会逃避空间。 现在我认为这与字符编码有关,但我没有看到任何设置o_O的选项

从PHP exec调用java

我在PHP中执行以下操作: exec(‘java -jar “/opt/flex3/lib/mxmlc.jar” +flexlib “/opt/flex3/frameworks” MyAS3App.as -default-size 360 280 -output MyAS3App.swf’); 当我从命令行运行它时,它运行正常并在一两秒内完成。 当我从PHP exec运行此命令时,java进程占用100%的CPU并且永远不会返回。 有任何想法吗? 我也尝试用’/ usr / bin / java -Djava.awt.headless = true’运行上面的命令。 我正在运行Mac OS X 10.5.5,MAMP 1.7,PHP 5.2.5