取决于您使用的平台和运行的命令。
例如,在Unix / Linux上,您可以
> /dev/null&在命令末尾追加命令,以告诉Shell释放您已启动的进程,exec将立即返回。这在Windows上不起作用,但是有一种使用COM对象的替代方法(请参见下面的编辑)。
许多命令都有可以传递的命令行参数,因此它们释放与终端的关联并立即返回。另外,某些命令似乎挂起,因为它们已经提出了一个问题,并且正在等待用户输入以继续执行操作(例如,当运行
gzip且目标文件已存在时)。在这些情况下,通常可以传递一个命令行参数来告诉程序如何处理而不提出问题(在
gzip示例中,您将传递
-f)。
编辑
只要
COM可用,以下是在Windows上执行所需操作的代码:
$commandToExec = 'somecommand.exe';$wshShell = new COM("Wscript.Shell");$wshShell->Run($commandToExec, 0, FALSE);请注意,它是第三个
FALSE告诉WshShell启动程序然后立即返回的
0参数(第二个参数定义为“窗口样式”,在这里可能没有意义-
您可以传递任何整数值)。WshShell对象在此处记录。这绝对有效,我以前用过…
我也在上面进行了编辑,以反映这样的事实:
/dev/null为了在* nix上
&工作,还需要使用管道
exec()。
还刚刚添加了有关WshShell的更多信息。



