我创建了一个脚本,使用psexec调用另一个调用psexec来运行我的命令行程序的脚本.
对psexec和其他脚本进行如此多调用的原因完全在于我的PHP脚本在完成输出到浏览器之前不必等待进程完成.
有没有办法我可以做到这一点,而无需使用psexec?我遇到了psexec的问题,所以我想将它从我的程序中完全删除.
我正在运行Windows 2008
编辑:我改变了标题,我想这将是一个更准确的标题.我If a program is started with this function, in order for it to continue running in the background, the output of the program must be redirected to a file or another output stream. Failing to do so will cause PHP to hang until the execution of the program ends.在php.net的页面上找到了exec(),但不知道该怎么做.
在命令行中包含重定向:
exec('program.exe > NUL')
Run Code Online (Sandbox Code Playgroud)
或者您可以修改您的程序以明确关闭标准输出,在C中这将是
CloseHandle(GetStdHandle(STD_OUTPUT_HANDLE));
Run Code Online (Sandbox Code Playgroud)
可能(文档没有说)您可能需要重定向/关闭标准输出和标准错误:
exec('program.exe > NUL 2> NUL')
Run Code Online (Sandbox Code Playgroud)
要么
CloseHandle(GetStdHandle(STD_OUTPUT_HANDLE));
CloseHandle(GetStdHandle(STD_ERROR_HANDLE));
Run Code Online (Sandbox Code Playgroud)