我正在使用apache commons exec
运行此命令C:\\Windows\\System32\\cmd.exe /C start ".\\test" /D ".\\test1" .\\test1\\ldecod.exe -p InputFile=\"test.h264\" -p OutputFile="test.yuv"
该命令通过命令提示符正常运行,即启动ldecod.exe并解码test.h264,但是当通过apache commons exec运行相同的命令时,它只打开文件夹" test1"
这里发生了什么?
编辑:使用以下代码
String cmd = "C:\\Windows\\System32\\cmd.exe /C start \".\\test\" /D \".\\test1\" .\\test1\\ldecod.exe -p InputFile=\"test.h264\" -p OutputFile=\"test.yuv\"";
CommandLine commandline = CommandLine.parse(cmd);
DefaultExecutor exec = new DefaultExecutor();
exec.execute(commandline);
答案 0 :(得分:0)
您需要将/ b参数添加到windows start命令。这将在不启动新命令提示符的情况下运行您的命令。 来自docs:
/ b - 在不打开新的命令提示符窗口的情况下启动应用程序。除非应用程序启用CTRL + C处理,否则将忽略CTRL + C处理。使用CTRL + BREAK中断应用程序。
您运行它的方式,start是产生一个新进程。我怀疑ldecod.exe正在运行,但启动命令(和你的程序)在你关闭命令提示符之前不会终止。