0

我正在编写一个启动 linux 映像并需要检测映像是否到达登录提示符的 perl 脚本。我正在使用 Device::serial 模块与开发板通信。我在检测登录字符串时遇到问题。我认为这可能与 linux 启动期间发生的大量打印有关。下面的代码尝试捕获提示。奇怪的是,它仅在我添加不必要的“读取”命令时才有效

# Wait for login prompt
$port->are_match("login:");
$gotit   = "";
$timeout = 60;
until (($gotit ne "") or ($timeout eq 0)) 
{
    $gotit = $port->lookfor;       # poll until data ready
    die "Aborted without match\n" unless (defined $gotit);
    $read = $port->read(1000000);
    $port->lookclear;
    sleep(1);
    $timeout--;
}

“lookfor”对 linux 引导场景有好处吗?为什么“读取”使此代码有效?

感谢大家

4

1 回答 1

0

CPAN 文档页面说要这样做:

  my $gotit = "";
  until ("" ne $gotit) {
      $gotit = $PortObj->lookfor;       # poll until data ready
      die "Aborted without match\n" unless (defined $gotit);
      sleep 1;                          # polling sample time
  }

$port->lookClear在他们的循环中没有调用。我怀疑这会导致您的问题。还要小心那个超时。

于 2012-05-01T06:57:52.783 回答