我正在编写一个脚本,该脚本需要定期(每 5 分钟)生成一个 Expect 进程来完成一些工作。下面是我拥有的生成 Expect 进程并完成一些工作的代码。脚本的主要进程一直在做一些其他的工作,例如它可能等待用户输入,因为我在一个线程中调用这个函数'spawn_expect',每5分钟调用一次,但问题是预期没有按预期工作。
但是,如果我用另一个进程替换线程,也就是说,如果我分叉并让一个进程负责生成 Expect,而另一个进程完成脚本的主要工作(例如在提示符处等待),那么 Expect 工作正常。
我的问题是是否有可能产生一个线程期望进程?我必须求助于使用流程来完成这项工作吗?谢谢 !
sub spawn_expect {
my $expect = Expect->spawn($release_config{kinit_exec});
my $position = $expect->expect(10,
[qr/Password.*: /, sub {my $fh = shift; print $fh "password\n";}],
[timeout => sub {print "Timed out";}]);
# if this function is run via a process, $position is defined, if it is run via a thread, it is not defined
...
}