Thanks, Martin!
You are right. The approach
private static String JAVA_EXE = System.getProperty("java.home")
+ File.separator + "bin"
+ File.separator + "java";
private static String[] getCommandArray(String processName) {
String[] cmdArray = {
JAVA_EXE,
"-cp",
System.getProperty("java.class.path"),
InheritIOEHandle.class.getName(),
processName
};
return cmdArray;
}
is better. There is one more problem with raise-condition for the file
handles. In current edition there is delta when the file handle could be
inherited by the concurrent process. That is not fatal for read/write,
but not good for delete. Synchronized call does not cover the file.close
in finalized block.
I will prepare new edition soon.
Regards,
-uta
On 5/8/2013 10:20 PM, Martin Buchholz wrote:
Alexey,
Thanks for working on the scary windows process stuff.
I only have time for superficial review.
It looks like you know what you're doing.
+ String[] cmdArray = {
+ "java",
+ "-cp",
This looks like it's invoking whatever "java" is on the path. But
there's no guarantee there is such a java, or that it's the right one.
Consider invoking the java we're in, as in other jtreg tests like
IIRC ProcessBuilder/Basic.java