我正在使用apachecommons 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,但当通过apachecommons 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);
您需要将/b参数添加到windows启动命令中。这将在不启动新命令提示符的情况下运行您的命令。来自文档:
/b-在不打开新的"命令提示符"窗口的情况下启动应用程序。除非应用程序启用CTRL+C处理,否则会忽略CTRL+C操作。使用CTRL+BREAK可以中断应用程序。
你运行它的方式,开始是产生一个新的进程。我怀疑ldecod.exe正在运行,但在关闭命令提示符之前,启动命令(和您的程序(不会终止。