【问题标题】:capture ncurses shell output in PHP在 PHP 中捕获 ncurses shell 输出
【发布时间】:2014-01-17 16:35:51
【问题描述】:

好吧,所以我不知道这是否可能,老实说,我更倾向于不可能的规模,但我认为这可能值得一问。

基本上我想知道的是是否可以捕获用 php 中的 ncurses 呈现的 shell 输出,以便与 htop 等工具一起使用。

我注意到 php 有一大堆实验性的 ncurses 函数,但它们似乎都旨在创建内容而不是阅读它。理想情况下,我可能会得到像

这样的东西
$output = ncurses_exec("htop --no-loop");

注意:我知道 htop 没有 --no-loop 的选项,但我添加它是为了在第一次渲染后退出程序(可以清除或保留渲染),只是为了测试目的

提前致谢

【问题讨论】:

  • 我从未使用过ncurses:exe,但我敢说这很可能不会在标准输出上产生任何可用的输出。就像top 之类的命令一样:它们以不同的方式使用终端,而不是按行写入标准输出。要么您可以切换该输出策略(top 为此提供了一个特定选项),要么您不走运。
  • 这几乎是我的想法,但我希望我错了
  • 问题是:为什么要使用ncurses_exec,当你想从标准输出读取?

标签: php shell ncurses


【解决方案1】:

有一个解决办法:

使用Gnu Screen

向以分离模式运行的screen 发送命令。这是一个简单粗暴的示例,只是为了帮助您入门:

<?php

// Start screen in detached mode, running htop
`screen  -d -m -S htop_session htop`;

 // let screen and htop start
sleep(1);

// Tell screen to save a screenshot in file 'hardcopy.0'
`screen -p 0 -S htop_session -X hardcopy`;

// Tell screen to quit
`screen -p 0 -S htop_session -X quit`;
?>

<pre>
    <?php print file_get_contents('hardcopy.0'); ?>
</pre>

值得尝试的事情

  • 实验如何设置更大的屏幕窗口尺寸

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2015-05-08
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    相关资源
    最近更新 更多