【问题标题】:How to interrupt a Recursive Word in the Listener如何在监听器中打断递归词
【发布时间】:2015-11-07 09:15:35
【问题描述】:

我正在使用文件系统更改监视器,并从Factor manual 输入此示例

: watch-loop ( monitor -- )
    dup next-change path>> print flush watch-loop ;

: watch-directory ( path -- )
    [ t [ watch-loop ] with-monitor ] with-monitors ;

然后用

调用它
"/tmp" watch-directory

这很好用,文件系统更改开始出现。但我无法阻止它。 Ctrl-C 在侦听器中似乎不起作用,甚至在点击“重新启动侦听器”按钮时也幸免于难。点击监听器的“结束”按钮是终止监控的唯一方法吗?我知道监视器是由with-monitor 组合器处理的,所以也许只是watch-loop 是递归的?!

【问题讨论】:

    标签: recursion factor-lang


    【解决方案1】:

    我在factor-talk(Factor 邮件列表)上偶然发现了这个帖子,我正在这里整理我从那里收集到的东西。如果有人有更正或修正,请编辑。

    1. 在命令行而不是在 GUI 中运行侦听器:factor -run=listener。这个应该对 Ctrl-C 做出反应。这会将您带到一个调试器 shell,您可以在其中键入 t 以取消异常。这里的一个问题似乎是 Ctrl-C 可能被捕获在代码的子线程中(传递地),从而中断了错误的事情。

    2. 在 GUI 中,启动第二个侦听器。然后就可以了

      2.1。挂起第一个运行递归词的侦听器。 (如何?)

      2.1。注册键盘挂钩的建议似乎不起作用as control keys are not forwarded to the listener

    【讨论】:

      猜你喜欢
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 2023-01-13
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多