windows 7 - Java process.waitFor() does not return -


on windows 7 64 bit, running 64 bit java 1.7.0_17 , p.waitfor() shown below never returns.

string move_command="cmd.exe /c xcopy /y /e "+x86_release+" "+path+"\\"; process p; p = runtime.getruntime().exec(move_command); p.waitfor(); 

if use windows explorer, looks files copied (same number, same size, etc.)

if below, waitfor() return:

string move_command="cmd.exe /c move /y "+x86_release+" "+path+"\\"; process p; p = runtime.getruntime().exec(move_command); p.waitfor(); 

what different between xcopy , move keeps waitfor() returning, or on wrong track entirely?

xcopy happens produce more output move, filling out-buffer , blocking until flushed. default behavior in java pipe subprocess's stdout/stderr inputstreams required read programmatically lest subprocess's buffers overflow.

if latter case, solution simple, , in fact should anyway: use processbuilder prepare system call , call inheritio on it. reuse parent process`s stdin , stdout subprocess.

a side note, xcopy regular .exe file , doesn't need wrapping cmd.exe /c.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

keyboard - C++ GetAsyncKeyState alternative -

android - java.net.UnknownHostException(Unable to resolve host “URL”: No address associated with hostname) -