我使用 exec() 来执行命令,无论是 linux 还是 windows。
你如何执行命令,linux和windows,并在不等待的情况下记录输出?
我知道对于 linux,不要等待输出:command* > /dev/null 2>/dev/null &
并记录 linux 的输出: command* > /path/to/log.txt 2>/path/to/error.txt
您将如何在一个命令中进行记录并将其设置为后台?窗户也会是什么样子?
在 Linux 上,您可以执行以下操作:
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 上,&
最后的 a 将其置于后台。在 Windows 上,这更复杂,需要start
调用进程并cmd
允许重定向流。