文章目录

  • 第十一章 Caché 命令大全 HALT 命令
  • 重要
  • 大纲
    • 参数
  • 描述
    • `HALT`的效果
    • `Halt`陷阱
  • 参数
    • pc
  • 示例
  • `$SYSTEM.Process.Terminate()`
  • `^RESJOB` and `^JOBEXAM`

第十一章 Caché 命令大全 HALT 命令

终止当前进程的执行。

重要

  1. 暂停进程的三种方式 HALT,$SYSTEM.Process.Terminate(),^RESJOB
  2. HALTHANG命令具有相同的最小缩写
    HANG区别在于它所需的挂起时间参数。
  3. HALT终止进程时,系统会自动释放所有锁定并关闭该进程拥有的所有设备
  4. Halt命令的执行被停止陷阱中断。停止陷阱是使用$HALT特殊变量建立的。$HALTHALT命令的回调.

大纲

HALT:pc
H:pc

参数

  • pc 可选,后置表达式

描述

HALT命令终止当前进程的执行。如果在当前上下文(或以前的上下文)中定义了$HALT特殊变量,则发出HALT命令将调用$HALT中指定的HALT陷阱例程,而不是终止当前进程。通常,HALT陷阱例程执行一些清理或报告操作,然后发出第二个HALT命令以终止执行。

无论是通过运行例程代码遇到HALT,还是从终端模式提示进入HALTHALT的行为都是相同的。在任何一种情况下,它都会终止当前进程。

HALTHANG命令具有相同的最小缩写。 HANG区别在于它所需的挂起时间参数。

HALT的效果

HALT终止进程时,系统会自动释放所有锁定并关闭该进程拥有的所有设备。 这可确保暂停的进程不会留下锁定的变量或未释放的设备。

如果在HALT终止进程时存在正在进行的事务,则事务的解决取决于进程的类型。后台JOB(非交互进程)的HALT总是回滚正在进行的事务。交互进程中的HALT(例如使用CachéTerminal运行例程)会提示解决正在进行的事务。提示如下:

You have an open transaction.
Do you want to perform a (C)ommit or (R)ollback? R =>

指定“C”以提交当前事务。指定“R”(或直接按Enter键)以回滚当前事务。

Halt陷阱

Halt命令的执行被停止陷阱中断。停止陷阱是使用$HALT特殊变量建立的。

如果已经为当前上下文帧建立了HALT陷阱,则发出HALT命令将调用由$HALT指定的HALT陷阱例程。不执行HALT命令本身。

如果已经为较低的上下文帧建立了停止陷阱,则HALT命令从帧堆栈中移除上下文帧,直到到达具有停止陷阱的上下文帧。然后,HALT调用由$HALT指定的HALT陷阱例程并停止执行。

参数

pc

可使命令具有条件的可选后置条件表达式。如果后置条件表达式为TRUE(计算结果为非零数值),则Caché执行HALT命令。如果后置条件表达式为假(计算结果为零),则Caché不执行该命令。

示例

在下面的示例中,HALT允许用户结束当前应用程序并返回到操作系统。系统将为用户执行所有必要的清理。注意命令中后置条件的用法。

/// d ##class(PHA.TEST.Command).TestHALT()
ClassMethod TestHALT()
{MainREAD !,"你真的想停止吗 (Y or N)? ",ans QUIT:ans=""HALT:(ans["Y")!(ans="y")DO Start
Start()WRITE !,"这是启动例程"QUIT
}
```java
输入`Y`,终端直接停止消失。在以下示例中,`HALT`调用`$HALT`中指定的`HALT`陷阱例程。在本例中,实际停止执行的是第二个HALT命令。(出于演示目的,此示例使用挂起语句,以便有时间查看显示的输出。)
```java
/// d ##class(PHA.TEST.Command).TestHALTStack()
ClassMethod TestHALTStack()
{MainNEW $ESTACKSET $HALT="OnHalt"WRITE !,"Main $ESTACK= ",$ESTACK   // 0HANG 2DO SubAWRITE !,"这应该永远不会显示"
SubA()WRITE !,"SubA $ESTACK= ",$ESTACK   // 1HANG 2HALT    // 调用OnHalt例程WRITE !,"这应该永远不会显示"
OnHalt()WRITE !,"OnHalt $ESTACK= ",$ESTACK   // 0HANG 2// 清理和报告操作HALT   // 实际停止当前进程
}
DHC-APP>d ##class(PHA.TEST.Command).TestHALTStack()Main $ESTACK= 0
SubA $ESTACK= 1
OnHalt $ESTACK= 0HANG 2^
<INTERRUPT>zTestHALTStack+15^PHA.TEST.Command.1

$SYSTEM.Process.Terminate()

可以使用$SYSTEM.Process.Terminate()方法暂停当前进程或暂停其他正在运行的进程。

下面的示例暂停当前进程:

 DO $SYSTEM.Process.Terminate()

以下示例使用PID 123停进程:

  DO $SYSTEM.Process.Terminate(123)

Terminate()方法的效果与当前进程的HALT命令或其他进程的^RESJOB实用程序相同。

^RESJOB and ^JOBEXAM

HALT命令用于暂停当前进程。

^RESJOB^JOBEXAM实用程序可用于暂停其他正在运行的进程。这些实用程序不能用于停止当前进程。它们可用于显示所有正在运行的进程的信息,包括当前进程。

必须从%SYS命名空间调用这些实用程序。必须具有适当的权限才能调用这些实用程序。实用程序名称区分大小写。

  • ^RESJOB允许在知道进程ID(PID)的情况下直接停止进程。选项以显示所有正在运行的进程的列表。
  • ^JOBEXAM首先显示所有正在运行的进程的列表,然后允许指定要暂停(终止)、挂起或恢复的进程。View ^JOBEXAM允许显示所有正在运行的进程的列表;它不提供暂停、挂起或恢复进程的选项。
    实际上输入的是 DO ^JOBEXAM
%SYS>View ^JOBEXAMVIEW ^JOBEXAMCache for Windows (x86-64) 2016.2 (Build 736U)Job# NSpace  Routine        Commands   Globals State PID      Current device1         CONTROL               0         0 RUNW  67042         WRTDMN              189      4272 RUNW  67243         GARCOL                0         0 RUNW  68564         JRNDMN            73004         0 RUNW  68525         EXPDMN                0         0 RUNW  68886 DHC-APP %SYS.BINDSRV   39773774   3691257 READ  7584     LAPTOP-ARLL:1972Cache for Windows (x86-64) 2016.2 (Build 736U)Job# NSpace  Routine        Commands   Globals State PID      Current device1         CONTROL               0         0 RUNW  67042         WRTDMN              190      4273 RUNW  67243         GARCOL                0         0 RUNW  68564         JRNDMN            73018         0 RUNW  68525         EXPDMN                0         0 RUNW  68886 DHC-APP %SYS.BINDSRV   39773774   3691257 READ  7584     LAPTOP-ARLL:19727 %SYS    MONITOR          417060        74 EVTW  9140     //./nul8 %SYS    CLNDMN             7980       519 RUNW  8040     //./nul9 %SYS    ECPWork               0         0 RUNW  9788     //./nul10 %SYS    %SYS.SERVER           0         0 READ  11716    1972:11 %SYS    LMFMON           234918       211 HANGW 11772    //./nul12 %SYS    %SYS.ProcessQuery 55340      1765 RUN   5944     |TRM|:|594414 %SYS    %SYS.TaskSuper   936403     37733 EVTW  9664     //./nul15 %SYS    %SYS.Monitor.C<50858259    492740 EVTW  9436     //./nul21 %SYS    RECEIVE          251669     13253 HANGW 9336     //./nul(N)ext,(P)rev,(G)oto,(E)xamine,(T)erminate,(S)uspend,(R)esume,(Q)uit =>

以下是从终端调用^RESJOB的示例:

%SYS>DO ^RESJOBForce a process to quit CacheProcess ID (? for status report): ?Cache System Status:  7:28 pm 27 Jun 2020Process  Device      Namespace      Routine         CPU,Glob  Pr User/Location6704                             CONTROL           0,0     86724                             WRTDMN          190,4273  96856                             GARCOL            0,0     86852                             JRNDMN        73043,0     86888                             EXPDMN            0,0     87584  |TCP|LAPTOP-ARLL3DSO:1972DHC-APP        %SYS.BINDSRV39775764,36913238  _SYSTEM9140  //./nul     %SYS           MONITOR      417060,74    88040  //./nul     %SYS           CLNDMN         7980,519   89788  //./nul     %SYS           ECPWork           0,0     8  ECPWORK11716  |TCP|1972   %SYS           %SYS.SERVER       0,0     811772  //./nul     %SYS           LMFMON       235173,211   85944* |TRM|:|5944 %SYS           %SYS.ProcessQuery60545,1784  8  yx9664  //./nul     %SYS           %SYS.TaskSuper936403,37733 8  TASKMGR9436  //./nul     %SYS           %SYS.Monitor.Control50866372,49283089336  //./nul     %SYS           RECEIVE      251669,13253 83 user, 12 system, 2048 mb global/512 mb routine cacheProcess ID (? for status report):

在提示符下,键入要暂停的进程的进程ID(PID)。^RESJOB暂停进程,然后提示输入下一个进程ID。输入完进程ID后,在提示符下按Enter键。你能指定吗?在提示下显示当前正在运行的进程列表。

  • 当前进程:尝试使用^RESJOB停止当前进程失败,并显示消息这是的当前进程,不能继续终止。^RESJOB然后提示输入另一个进程ID。
  • 未运行进程:指定未运行进程的进程ID失败,并显示消息[无此Caché ]。^RESJOB然后提示您输入另一个进程ID。
  • 系统进程:不能使用^RESJOB暂停某些系统进程。尝试这样做会失败,并显示消息Can not kill the name process。^RESJOB然后提示输入另一个进程ID。
  • 正在进行的事务:使用^RESJOB暂停正在进行事务的进程与在该进程中发出HALT命令相同。非交互式进程回滚未完成的事务;交互式进程在其终端提示符处提示提交或回滚未完成的事务。

第十一章 Caché 命令大全 HALT 命令相关推荐

  1. 类 workbooks 的 open 方法无效_第十九章 Cach 命令大全 OPEN 命令

    第十九章 Caché 命令大全 OPEN 命令 获取输入/输出操作的设备或文件的所有权. 重点 打开设备要指定延迟秒,否则将无限等待. 大纲 OPEN:pc device:(parameters):t ...

  2. 第三十七章 Caché 命令大全 ZWRITE 命令

    文章目录 第三十七章 Caché 命令大全 ZWRITE命令 重点 大纲 参数 描述 `ZWRITE`不带参数 `ZWRITE`带参数 Variables Non-Display Characters ...

  3. 第二十三章 Caché 命令大全 SET 命令

    文章目录 第二十三章 Caché 命令大全 SET 命令 重点 大纲 参数 描述 将多个变量设置为相同的值 设置多个变量的限制 参数 pc variable value JSON值 JSON对象 JS ...

  4. 第十八章 Caché 命令大全 NEW 命令

    文章目录 第十八章 Caché 命令大全 NEW 命令 重点 大纲 参数 描述 NEW的限制 参数 pc variable 示例 注意 使用`NEW`功能的位置 `new`和`kill` `Inclu ...

  5. 第二十章 Caché 命令大全 QUIT 命令

    文章目录 第二十章 Caché 命令大全 QUIT 命令 重点 大纲 参数 描述 在程序代码中 无参数`QUIT` 带参数QUIT 在终端提示下 参数 pc expression 示例 注意 `QUI ...

  6. 第二十八章 Caché 命令大全 TSTART 命令

    文章目录 第二十八章 Caché 命令大全 TSTART 命令 重点 大纲 参数 描述 嵌套事务 SQL Transactions 参数 pc 示例 第二十八章 Caché 命令大全 TSTART 命 ...

  7. 第八十三章 Caché 函数大全 $ZDATE 函数

    文章目录 第八十三章 Caché 函数大全 $ZDATE 函数 大纲 参数 描述 简单的$ZDATE格式 可自定义日期默认 参数 hdate dformat dformat Default dform ...

  8. 第七十五章 Caché 函数大全 $XECUTE 函数

    文章目录 第七十五章 Caché 函数大全 $XECUTE 函数 大纲 参数 描述 参数 code paramlist 示例 第七十五章 Caché 函数大全 $XECUTE 函数 执行指定的命令行. ...

  9. 第十九章 Caché 函数大全 $INCREMENT 函数

    文章目录 第十九章 Caché 函数大全 $INCREMENT 函数 大纲 参数 描述 参数 variable num INCREMENT或INCREMENT或INCREMENT或SEQUENCE $ ...

  10. 第六十四章 Caché 函数大全 $STACK 函数

    文章目录 第六十四章 Caché 函数大全 $STACK 函数 大纲 参数 描述 `$ECODE` 与 `$STACK` `$STACK`的单参数形式 `$STACK`的两个参数形式 示例 注意 跨命 ...

最新文章

  1. [模拟退火]BZOJ 3680 吊打XXX
  2. js 为什么0.1+0.2不等于0.3
  3. jooq 配置oracle_jOOQ配置
  4. 【华为云技术分享】【论文阅读】增量学习近期进展及未来趋势预测
  5. MIT6.830 lab1 SimpleDb 实验报告
  6. java 多线程 int_java多线程问题
  7. LeetCode题解答案集合(完全版) Python
  8. 3D打印软件 PrusaSlicer切片软件
  9. 说说关于访问控制模型
  10. 4gl程式debug常用技巧
  11. 解决谷歌浏览器Chrome 代理设置不能上网的问题
  12. MySQL特异功能之:Impossible WHERE noticed after reading const tables
  13. 同一个浏览器多用户同时登录的解决方案
  14. ​Android实现仿QQ登录可编辑下拉菜单
  15. 通话过程中显示呼叫失败_iphone怎么总是打电话出现呼叫失败求大神解救
  16. 解决this application failed to start
  17. Eolink 征文活动- -后端研发需要的API文档工具
  18. 计算机配置高低怎么看,怎么查看电脑配置?(查看电脑配置高低的三种方法!)...
  19. Vue3 _ 11. Vue 生命周期 生命周期狗子
  20. 国内ChatGPT的镜像网站分享

热门文章

  1. @TableLogic注解
  2. C++ 实现贪吃蛇游戏(免费附源码)
  3. iOS获取UUID,并使用keychain存储,可用于封设备
  4. YAWL工作流软件的介绍和使用
  5. 【verbs】ibv_query_qp()
  6. python 中的 Fraction和GCD求最大公约数
  7. C语言,快速隐藏/显示桌面图标和任务栏
  8. css3-pie,CSS3pie是什么?
  9. 计算机启动黑屏时间很长,电脑开机黑屏时间长怎么办?[多图]
  10. 手把手教你处理单张百度热力图