Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
eae61ecd
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
eae61ecd
编写于
9月 23, 2013
作者:
A
alanb
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8023130: (process) ProcessBuilder#inheritIO does not work on Windows
Reviewed-by: alanb, martin Contributed-by: ivan.gerasimov@oracle.com
上级
3425cb63
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
141 addition
and
5 deletion
+141
-5
src/windows/native/java/lang/ProcessImpl_md.c
src/windows/native/java/lang/ProcessImpl_md.c
+5
-1
test/java/lang/ProcessBuilder/Basic.java
test/java/lang/ProcessBuilder/Basic.java
+8
-4
test/java/lang/ProcessBuilder/InheritIO/InheritIO.java
test/java/lang/ProcessBuilder/InheritIO/InheritIO.java
+47
-0
test/java/lang/ProcessBuilder/InheritIO/InheritIO.sh
test/java/lang/ProcessBuilder/InheritIO/InheritIO.sh
+81
-0
未找到文件。
src/windows/native/java/lang/ProcessImpl_md.c
浏览文件 @
eae61ecd
...
@@ -308,7 +308,11 @@ static jlong processCreate(
...
@@ -308,7 +308,11 @@ static jlong processCreate(
if
(
success
)
{
if
(
success
)
{
PROCESS_INFORMATION
pi
;
PROCESS_INFORMATION
pi
;
DWORD
processFlag
=
CREATE_NO_WINDOW
|
CREATE_UNICODE_ENVIRONMENT
;
DWORD
processFlag
=
CREATE_UNICODE_ENVIRONMENT
;
/* Suppress popping-up of a console window for non-console applications */
if
(
GetConsoleWindow
()
==
NULL
)
processFlag
|=
CREATE_NO_WINDOW
;
si
.
dwFlags
=
STARTF_USESTDHANDLES
;
si
.
dwFlags
=
STARTF_USESTDHANDLES
;
if
(
!
CreateProcessW
(
if
(
!
CreateProcessW
(
...
...
test/java/lang/ProcessBuilder/Basic.java
浏览文件 @
eae61ecd
...
@@ -298,11 +298,15 @@ public class Basic {
...
@@ -298,11 +298,15 @@ public class Basic {
System
.
exit
(
5
);
System
.
exit
(
5
);
System
.
err
.
print
(
"standard error"
);
System
.
err
.
print
(
"standard error"
);
System
.
out
.
print
(
"standard output"
);
System
.
out
.
print
(
"standard output"
);
}
else
if
(
action
.
equals
(
"testInheritIO"
))
{
}
else
if
(
action
.
equals
(
"testInheritIO"
)
||
action
.
equals
(
"testRedirectInherit"
))
{
List
<
String
>
childArgs
=
new
ArrayList
<
String
>(
javaChildArgs
);
List
<
String
>
childArgs
=
new
ArrayList
<
String
>(
javaChildArgs
);
childArgs
.
add
(
"testIO"
);
childArgs
.
add
(
"testIO"
);
ProcessBuilder
pb
=
new
ProcessBuilder
(
childArgs
);
ProcessBuilder
pb
=
new
ProcessBuilder
(
childArgs
);
pb
.
inheritIO
();
if
(
action
.
equals
(
"testInheritIO"
))
pb
.
inheritIO
();
else
redirectIO
(
pb
,
INHERIT
,
INHERIT
,
INHERIT
);
ProcessResults
r
=
run
(
pb
);
ProcessResults
r
=
run
(
pb
);
if
(!
r
.
out
().
equals
(
""
))
if
(!
r
.
out
().
equals
(
""
))
System
.
exit
(
7
);
System
.
exit
(
7
);
...
@@ -1019,10 +1023,10 @@ public class Basic {
...
@@ -1019,10 +1023,10 @@ public class Basic {
// Note that this requires __FOUR__ nested JVMs involved in one test,
// Note that this requires __FOUR__ nested JVMs involved in one test,
// if you count the harness JVM.
// if you count the harness JVM.
//----------------------------------------------------------------
//----------------------------------------------------------------
{
for
(
String
testName
:
new
String
[]
{
"testInheritIO"
,
"testRedirectInherit"
}
)
{
redirectIO
(
pb
,
PIPE
,
PIPE
,
PIPE
);
redirectIO
(
pb
,
PIPE
,
PIPE
,
PIPE
);
List
<
String
>
command
=
pb
.
command
();
List
<
String
>
command
=
pb
.
command
();
command
.
set
(
command
.
size
()
-
1
,
"testInheritIO"
);
command
.
set
(
command
.
size
()
-
1
,
testName
);
Process
p
=
pb
.
start
();
Process
p
=
pb
.
start
();
new
PrintStream
(
p
.
getOutputStream
()).
print
(
"standard input"
);
new
PrintStream
(
p
.
getOutputStream
()).
print
(
"standard input"
);
p
.
getOutputStream
().
close
();
p
.
getOutputStream
().
close
();
...
...
test/java/lang/ProcessBuilder/InheritIO/InheritIO.java
0 → 100644
浏览文件 @
eae61ecd
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
static
java
.
lang
.
ProcessBuilder
.
Redirect
.*;
class
InheritIO
{
public
static
class
TestInheritIO
{
public
static
void
main
(
String
args
[])
throws
Throwable
{
int
err
=
new
ProcessBuilder
(
args
).
inheritIO
().
start
().
waitFor
();
System
.
err
.
print
(
"exit value: "
+
err
);
System
.
exit
(
err
);
}
}
public
static
class
TestRedirectInherit
{
public
static
void
main
(
String
args
[])
throws
Throwable
{
int
err
=
new
ProcessBuilder
(
args
)
.
redirectInput
(
INHERIT
)
.
redirectOutput
(
INHERIT
)
.
redirectError
(
INHERIT
)
.
start
().
waitFor
();
System
.
err
.
print
(
"exit value: "
+
err
);
System
.
exit
(
err
);
}
}
}
test/java/lang/ProcessBuilder/InheritIO/InheritIO.sh
0 → 100644
浏览文件 @
eae61ecd
#
# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
# @test
# @bug 8023130
# @summary (process) ProcessBuilder#inheritIO does not work on Windows
# @run shell InheritIO.sh
if
[
"x
${
TESTSRC
}
"
=
"x"
]
;
then
echo
"TESTSRC not set. Test cannot execute. Failed."
exit
1
fi
if
[
"x
${
TESTJAVA
}
"
=
"x"
]
;
then
echo
"TESTJAVA not set. Test cannot execute. Failed."
exit
1
fi
JAVA
=
"
${
TESTJAVA
}
/bin/java"
JAVAC
=
"
${
TESTJAVA
}
/bin/javac"
cp
-f
${
TESTSRC
}
/InheritIO.java
.
# compile the class ourselves, so this can run as a standalone test
${
JAVAC
}
InheritIO.java
RES
=
"
$?
"
if
[
${
RES
}
!=
0
]
;
then
echo
'FAIL: Cannot compile InheritIO.java'
exit
${
RES
}
fi
for
TEST_NAME
in
TestInheritIO TestRedirectInherit
do
${
JAVA
}
${
TESTVMOPTS
}
-classpath
.
\
'InheritIO$'
${
TEST_NAME
}
printf
message
>
stdout.txt 2> stderr.txt
RES
=
"
$?
"
if
[
${
RES
}
!=
0
]
;
then
echo
'FAIL: InheritIO$'
${
TEST_NAME
}
' failed with '
${
RES
}
exit
${
RES
}
fi
OUT_EXPECTED
=
'message'
OUT_RECEIVED
=
`
cat
stdout.txt
`
if
[
"x
${
OUT_RECEIVED
}
"
!=
"x
${
OUT_EXPECTED
}
"
]
;
then
echo
"FAIL: unexpected '
${
OUT_RECEIVED
}
' in stdout"
exit
1
fi
ERR_EXPECTED
=
'exit value: 0'
ERR_RECEIVED
=
`
cat
stderr.txt
`
if
[
"x
${
ERR_RECEIVED
}
"
!=
"x
${
ERR_EXPECTED
}
"
]
;
then
echo
"FAIL: unexpected '
${
ERR_RECEIVED
}
' in stderr"
exit
1
fi
done
echo
'PASS: InheritIO works as expected'
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录