Java ProcessBuilder关闭系统错误
当我尝试获取inputstream并运行该代码块时,系统将进入一个无限循环。 然后我改变了代码,如上图所示。但是,当我运行它时,它的退出值为1,无法关闭系统 有什么想法吗 PS:我不想使用java运行时。试试:Java ProcessBuilder关闭系统错误,java,processbuilder,Java,Processbuilder,当我尝试获取inputstream并运行该代码块时,系统将进入一个无限循环。 然后我改变了代码,如上图所示。但是,当我运行它时,它的退出值为1,无法关闭系统 有什么想法吗 PS:我不想使用java运行时。试试: ProcessBuilder pb; Process process; String command ="shutdown -s"; try { pb = new ProcessBuilder("cmd.exe", "/C", command)
ProcessBuilder pb;
Process process;
String command ="shutdown -s";
try {
pb = new ProcessBuilder("cmd.exe", "/C", command)
process = pb.start();
process.waitFor();
if (process.exitValue() == 0) {
//success
} else {
//handle error
}
} catch (Exception e) {
//handle error
}
构造函数ProcessBuilder的参数命令(字符串…命令)作为1个参数传递给可执行文件,这允许参数中有空格
您执行命令的方式与
cmd/C“关机-s”
因此,“shutdown-s”被解释为单个参数。命令应为:
pb = new ProcessBuilder("cmd.exe", "/C", "shutown", "-s");
而不是:
String command ="shutdown.exe -s";
我的其他命令可以工作,即使我没有单独传递它们的参数?我只是直接在cmd中做了一些测试。。。它似乎在双引号中拆分参数。i、 e
cmd>cmd/C“foo.exe arg1 arg2”
被解释为cmd>cmd/C“foo.exe”“arg1”“arg2”
,cmd>cmd/C“foo.exe”“arg1 arg2”“
相当于cmd>cmd/C foo.exe”“arg1 arg2”
witch是一种奇怪的行为,因为如果想将arg1 agr2
解释为包含空格字符的单个参数,他会直观地编写cmd>cmd/C“foo.exe\“arg1 arg2\”
String command ="shutdown -s";