8

我使用 exec() 来执行命令,无论是 linux 还是 windows。

你如何执行命令,linux和windows,并在不等待的情况下记录输出?

我知道对于 linux,不要等待输出:command* > /dev/null 2>/dev/null &

并记录 linux 的输出: command* > /path/to/log.txt 2>/path/to/error.txt

您将如何在一个命令中进行记录并将其设置为后台?窗户也会是什么样子?

4

1 回答 1

20

在 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允许重定向流。

于 2012-06-28T18:32:20.327 回答