我想以非阻塞的方式在PHP中调用子进程,并将stdout和stderr指向同一个管道,这样stdout和stderr上的行按其生成顺序一起出现,就像执行一样在控制台上。
将两者都指向临时文件是非常不受欢迎的。
该进程是单线程的,因此不需要同时调用write()。当然,我想捕获过程的输出。
答案 0 :(得分:3)
除了pcntl_fork()
和pcntl_exec()
之外,在PHP中启动进程的所有函数都将在shell中启动命令 。使用IO redirection:
echo shell_exec('command 2>&1');
表达式2>&1
将文件描述符2
(stderr)重定向到文件描述符1
(stdout)。