我能运行Linux命令状ls或pwd从Java没有问题,但不能得到执行的Python脚本。
ls
pwd
这是我的代码:
Process p; try{ System.out.println("SEND"); String cmd = "/bash/bin -c echo password| python script.py '" + packet.toString() + "'"; //System.out.println(cmd); p = Runtime.getRuntime().exec(cmd); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String s = br.readLine(); System.out.println(s); System.out.println("Sent"); p.waitFor(); p.destroy(); } catch (Exception e) {}
什么都没有发生。它到达了SEND,但之后就停止了…
我正在尝试执行需要root权限的脚本,因为它使用串行端口。另外,我还必须传递带有一些参数的字符串(数据包)。
您不能Runtime.getRuntime().exec()像在示例中那样在内部使用PIPE 。PIPE是shell的一部分。
Runtime.getRuntime().exec()
你可以做
.exec()
String[] cmd = { "/bin/bash", "-c", "echo password | python script.py '" + packet.toString() + "'" }; Runtime.getRuntime().exec(cmd);