我使用exec()来执行命令,无论是linux还是windows。
如何在linux和windows上执行命令并记录输出而不等待?
我知道在linux上,不等待输出的方法是:command* > /dev/null 2>/dev/null &
要记录linux上的输出:command* > /path/to/log.txt 2>/path/to/error.txt
如何用一个命令同时记录输出并将其设置为后台运行?在windows中有什么类似的方法?
exec('command* > /dev/null 2>/dev/null &');
在Windows上,你可以这样做:
pclose(popen('start /B cmd /C "command* >NUL 2>NUL"', 'r'));
这两个示例都禁用输出和错误信息,它们会被重定向到 /dev/null
(Linux)或 NUL
(Windows),这意味着它们不会被存储在任何地方。
你可以将其替换为系统上的有效路径。
在 Linux 上,末尾的 &
将其置于后台运行。在 Windows 上需要使用 start
来调用进程和 cmd
来允许流的重定向。
command*
(包括 *
)。如果你保留 *
,它将无法工作。 - CodiMech25
&
可以将事物放在后台运行。但这在Windows系统下不起作用,只适用于Linux系统。 - hakrestart
命令。 - ametren