通过PHP执行Shell命令,并获取有关是否来自Stdout和Stderr的输出



我想执行一个shell命令,并将输出在数组中以:(1(输出的每行都是数组中的元素(2(线条被"标记",就像来自stdout还是从stderr

类似:

╔═════════╦══════════════════╗
║ Line No ║ Stdout or stderr ║
╠═════════╬══════════════════╣
║ Line1   ║ Stdout           ║
╠═════════╬══════════════════╣
║ Line2   ║ Stdout           ║
╠═════════╬══════════════════╣
║ Line3   ║ Stderr           ║
╠═════════╬══════════════════╣
║ Line4   ║ Stdout           ║
╚═════════╩══════════════════╝

这是一张桌子,但我的确是一个多维数组,其中$ thisArray [0],$ thisArray [1]是行。我假设执行的外壳命令将在切换到stderr或stdout之前始终生成一条新行。

这样,我可以看到哪个行属于哪个文件描述符,并能够在上下文中看到它。

有什么方法可以在PHP中使用Shell Exec命令或其他方式执行此操作?

如果PHP不可能,我不介意其他技术。

如果将线路断裂的字符串输入输入并通过此操作:

$arr = explode(PHP_EOL, $output);

然后,$ arr将带有您的数组,其中一个项目每$输出行。

最新更新