我可以从
Java执行像ls或pwd这样的
Linux命令,但是不能执行
Python脚本.
这是我的代码:
- 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脚本中,然后使用.exec()或
>你可以做类似以下的事情
- String[] cmd = {
- "/bin/bash","-c","echo password | python script.py '" + packet.toString() + "'"
- };
- Runtime.getRuntime().exec(cmd);