gpt4 book ai didi

java - getRuntime().exec(String[]) 函数的行为与 getRuntime().exec(String) (Android) 不同

转载 作者:太空宇宙 更新时间:2023-11-04 09:34:38 26 4
gpt4 key购买 nike

尝试使用一些自定义数据(-p 标志)调用 ping。由于我需要传递参数,因此使用接受字符串数组的 exec() 重载似乎很直观。它一直失败,所以我尝试了与一长串相同的精确输入,现在一切都很好。我不知道问题是什么,我已经检查了多次输入。

尝试在字符串数组中添加额外的空格,以排除参数之间缺少空格的任何问题。

String sPattern = StringUtils.bytesToHex(sData.getBytes());
sPattern = padHexString(sPattern);
sPattern = "-p " + sPattern.toLowerCase(); // "-p 3132372e302e302e31ffffffffffffff"

// this FAILS
Runtime.getRuntime().exec(new String[]{"/system/bin/ping",
"-c 1",
"-s 64",
sPattern,
sReportServer});


// this WORKS
Runtime.getRuntime().exec("/system/bin/ping -c 1 -s 64 " +
sPattern + " " + sReportServer);

第一次调用失败,要么显示用法,要么给出“模式必须是十六进制数字”的错误。确实如此。第二次调用工作正常。

两种方法都应该可以正常工作。

最佳答案

正如 Carlos Heuberger 指出的那样,我在某些参数中存在空格,这导致调用失败。我的想法是将开关和关联的参数配对在同一个字符串中,但这会导致它用双引号引起来。

希望这可以为做同样事情的人节省一些时间:|

关于java - getRuntime().exec(String[]) 函数的行为与 getRuntime().exec(String) (Android) 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56658539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com