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] 请联系我: [email protected]

你可能感兴趣的:(JAVA,runtime,数据库,java)