Traps: Runtime.exec(cmdStr)


public class Demo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
String szCmd = "notepad.exe 'd:/fdasf/er a d.exe'";
System.out.println(szCmd);
Process pro = Runtime.getRuntime().exec(szCmd);
}
}

With tool "Process monitor", I can find actually it execute : notepad.exe 'd:/fdasf/er a d.exe'


Use above, it works:

String[] szCmd = {"notepad.exe","'d:/fdasf/er a d.exe'"};
System.out.println(szCmd);
Process pro = Runtime.getRuntime().exec(szCmd);



The traps in Runtime.exec() are primarily due to the C libraries it has to invoke to start the new process. The feature of coalescing of multiple spaces into a single space is a mixture of Java and C and the mistake made by the Runtime.exec() authors was to include the single string version of exec() in the first place.
[url]https://forums.oracle.com/forums/thread.jspa?messageID=9974874#9974874[/url]
[url]http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html[/url]

---------------------------------------------------------------------------------------------------------------------------
工程师招聘,岗位见: [url]http://job.youzan.com[/url] 请联系我: linzuxiong1988@gmail.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值