将stdout和stderr重定向到同一个管道中

时间:2015-04-15 20:18:10

标签: php

我想以非阻塞的方式在PHP中调用子进程,并将stdout和stderr指向同一个管道,这样stdout和stderr上的行按其生成顺序一起出现,就像执行一样在控制台上。

将两者都指向临时文件是非常不受欢迎的。

该进程是单线程的,因此不需要同时调用write()。当然,我想捕获过程的输出。

1 个答案:

答案 0 :(得分:3)

除了pcntl_fork()pcntl_exec()之外,在PHP中启动进程的所有函数都将在shell中启动命令 。使用IO redirection

echo shell_exec('command 2>&1');

表达式2>&1将文件描述符2(stderr)重定向到文件描述符1(stdout)。