gpt4 book ai didi

tcl8.6 : what is the built-in equivalent to 'atexit()' in stdlib or 'trap ". 。 ."EXIT' 在 bash 中?

转载 作者:行者123 更新时间:2023-12-03 23:07:58 25 4
gpt4 key购买 nike

我正在寻找一个内置或标准包,它提供与 stdlib 的 atexit() 相似或等效的功能。和 bash' trap "..." EXIT .

它应该捕获由于任何结束执行的编程方式而终止,包括以下所有内容:

  • 自然到达脚本执行结束
  • 显式调用 exit
  • 未捕获 error
  • 最佳答案

    在大多数情况下,拦截此类终止所需要做的就是拦截 exit命令。

    rename exit real_exit
    proc exit args {
    puts "EXITING"; flush stdout; # Flush because I'm paranoid...
    tailcall real_exit {*}$args
    }

    如果您显式调用它显然会起作用,但是如果您只是放下脚本的结尾,在交互式 session 中发出文件结束信号,或者您的脚本稍后有错误并以错误终止,它也会被调用信息。这是因为 Tcl C API 调用 Tcl_Exit() , 通过调用 exit 工作并且,如果这不退出该过程,则直接退出。

    小心退出脚本顺便说一句;它们中的错误比正常情况更难调试。

    它不起作用的情况?主要是在解释器本身无法执行命令的情况下(可能是因为它已从自身下方删除)或某些信号关闭了解释器(例如,由于各种原因,默认情况下不处理 SIGINT)。

    关于tcl8.6 : what is the built-in equivalent to 'atexit()' in stdlib or 'trap ". 。 ."EXIT' 在 bash 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61062311/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com