从java传递参数执行python脚本
几天前我问过关于从java执行python脚本的问题。它部分地解决了我的问题。但现在,我无法传递任何参数并使该脚本执行任何操作 我的脚本必须接收XBee帧并通过串行端口发送。我在shell中测试了脚本,效果很好。因此,执行:从java传递参数执行python脚本,java,python,shell,Java,Python,Shell,几天前我问过关于从java执行python脚本的问题。它部分地解决了我的问题。但现在,我无法传递任何参数并使该脚本执行任何操作 我的脚本必须接收XBee帧并通过串行端口发送。我在shell中测试了脚本,效果很好。因此,执行:sudo python script.py frame,将发送该帧 现在,我试着用java做同样的事情,但失败了。我的代码是: Process p; //System.out.println(packet.toString()); try{ StringBuffer
sudo python script.py frame
,将发送该帧
现在,我试着用java做同样的事情,但失败了。我的代码是:
Process p;
//System.out.println(packet.toString());
try{
StringBuffer p1 = new StringBuffer();
String[] cmd = {"/bin/bash", "-c", "echo pass | python script.py b'", packet.toString(), "'"};
p = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s = br.readLine();
p.waitFor();
p.destroy();
} catch (Exception e) {}
我必须在参数前加b,在参数后加另一个。数据包是StringBuffer,所以我使用toString方法获取字符串
我需要以root用户身份运行它,因为它使用串行端口,如果没有,它会告诉我我没有权限
你知道怎么做吗?当我运行脚本时,我试图用一些单词编写一个文件,但什么也没发生,这让我想到它运行不正常。为什么这里需要管道?这不是您尝试使用shell时使用的。为什么不运行python脚本呢?命令
echo pass
只打印passs
,然后由脚本处理。您只需执行脚本,并将word传递到其STDIN中即可。谢谢您的评论。pass是成为root用户的密码。如何执行该行?您认为,让套接字监听python脚本并让它一直运行会更容易吗。通过这种方式,我可以从java发送数据,就像我通过internet发送数据一样……可能是