多重生成/预期问题

shellnoob67

目前,我正在研究一个脚本来自动执行Data Collector流程。通过长期运行,我将这些Collector脚本分为四个部分。现在,我想同时启动这些Collectorscripts,但我不知道该怎么做。我的代码专家工作:

package require Expect
log_user 0
set timeout 10200

spawn ./Log.tcl 2 5 1; set spawn1 $spawn_id
spawn ./Log.tcl 3 4 2; set spawn2 $spawn_id
spawn ./Log.tcl 7 8 2; set spawn3 $spawn_id
spawn ./Log.tcl 6 9 3; set spawn4 $spawn_id
expect -i $spawn1 eof {wait ; puts "--- 2,5 fertig ---"}
expect -i $spawn2 eof {wait ; puts "--- 3,4 fertig ---"}
expect -i $spawn3 eof {wait ; puts "--- 7,8 fertig ---"}
expect -i $spawn4 eof {puts "--- 6,9 fertig ---"}

这是运行和制造的东西。但是,如果一项工作在另一项工作之前已经准备好,它将产生僵尸。有可能使它变得简单而美丽吗?我尝试了一些带有while循环的exp_after,exp_background,$ any_spawn_id。但是没有任何效果。期望永远不会得到成功。

这里

如果您需要知道生成的命令的完成顺序,则很难等待,但是expect会接受一个生成ID的列表以同时收听。例如,

spawn sleep 2
 lappend allids $spawn_id
 set cmd($spawn_id) "sleep 2"
spawn sleep 1
 lappend allids $spawn_id
 set cmd($spawn_id) "sleep 1"

while { [llength $allids]>0 } {
 expect -i "$allids" eof {
  puts "eof on $expect_out(spawn_id) from cmd $cmd($expect_out(spawn_id))"
  set idx [lsearch -exact $allids $expect_out(spawn_id)]
  set allids [lreplace $allids $idx $idx]
 }
}

这将运行2个命令,sleep 2并且sleep 1将每个生成ID附加到list中allids为方便起见,该命令还应在该cmd命令的生成ID索引的数组中注明

然后将所有衍生ID的列表提供给expect eofusing -i当eof匹配时,全局变量$expect_out(spawn_id)包含导致匹配的进程的生成ID。cmd数组中索引此值后,将显示一条消息

最后,从列表中删除带有eof的生成ID,并重复循环,直到列表为空。

请注意,您不能使用它exp_continue来继续Expect循环,因为-i似乎没有重新评估值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RAII多重生成器

来自分类Dev

预期的问题

来自分类Dev

Unity 2D重生实例化问题

来自分类Dev

如何在NSPredicate中重生成MATCHES以查询Realm?

来自分类Dev

如何在NSPredicate中重生成MATCHES以查询Realm?

来自分类Dev

在 Unity 3D 中销毁和生成(重生)对象

来自分类Dev

使用权重生成重复项(python)

来自分类Dev

Python多重继承问题

来自分类Dev

多重结构问题

来自分类Dev

jQuery多重加载问题

来自分类Dev

多重纹理无法按预期工作

来自分类Dev

多重继承没有按预期工作

来自分类Dev

“可能的IEnumerable的多重枚举”问题?

来自分类Dev

SQL多重连接语句问题

来自分类Dev

SVG问题:AttValue:“或”预期

来自分类Dev

SVG问题:AttValue:“或”预期

来自分类Dev

“超级”问题:“错误:'('预期”

来自分类Dev

haskell 预期类型问题

来自分类Dev

代码生成与预期不同

来自分类Dev

在有负边的无向图中找到最小的权重生成树

来自分类Dev

Python多重处理的输出队列提供了比预期更多的结果

来自分类Dev

多重性和EF 6的问题

来自分类Dev

模板和接口的多重继承问题

来自分类Dev

多重继承Python,super().__ init__问题

来自分类Dev

由于多重处理,脚本之间的范围问题

来自分类Dev

仍然是“多重处置”问题,即使处理

来自分类Dev

PHP多重循环生成新数组

来自分类Dev

PHP多重循环生成新数组

来自分类Dev

预期的ProductField,出现数组问题