第十一章 Caché 命令大全 HALT 命令
文章目录
- 第十一章 Caché 命令大全 HALT 命令
- 重要
- 大纲
- 参数
- 描述
- `HALT`的效果
- `Halt`陷阱
- 参数
- pc
- 示例
- `$SYSTEM.Process.Terminate()`
- `^RESJOB` and `^JOBEXAM`
第十一章 Caché 命令大全 HALT 命令
终止当前进程的执行。
重要
- 暂停进程的三种方式
HALT
,$SYSTEM.Process.Terminate()
,^RESJOB
HALT
与HANG
命令具有相同的最小缩写
HANG
区别在于它所需的挂起时间参数。- 当
HALT
终止进程时,系统会自动释放所有锁定并关闭该进程拥有的所有设备 Halt
命令的执行被停止陷阱中断。停止陷阱是使用$HALT
特殊变量建立的。$HALT
是HALT
命令的回调.
大纲
HALT:pc
H:pc
参数
- pc 可选,后置表达式
描述
HALT
命令终止当前进程的执行。如果在当前上下文(或以前的上下文)中定义了$HALT
特殊变量,则发出HALT
命令将调用$HALT
中指定的HALT
陷阱例程,而不是终止当前进程。通常,HALT
陷阱例程执行一些清理或报告操作,然后发出第二个HALT
命令以终止执行。
无论是通过运行例程代码遇到HALT
,还是从终端模式提示进入HALT
,HALT
的行为都是相同的。在任何一种情况下,它都会终止当前进程。
HALT
与HANG
命令具有相同的最小缩写。 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 命令相关推荐
- 类 workbooks 的 open 方法无效_第十九章 Cach 命令大全 OPEN 命令
第十九章 Caché 命令大全 OPEN 命令 获取输入/输出操作的设备或文件的所有权. 重点 打开设备要指定延迟秒,否则将无限等待. 大纲 OPEN:pc device:(parameters):t ...
- 第三十七章 Caché 命令大全 ZWRITE 命令
文章目录 第三十七章 Caché 命令大全 ZWRITE命令 重点 大纲 参数 描述 `ZWRITE`不带参数 `ZWRITE`带参数 Variables Non-Display Characters ...
- 第二十三章 Caché 命令大全 SET 命令
文章目录 第二十三章 Caché 命令大全 SET 命令 重点 大纲 参数 描述 将多个变量设置为相同的值 设置多个变量的限制 参数 pc variable value JSON值 JSON对象 JS ...
- 第十八章 Caché 命令大全 NEW 命令
文章目录 第十八章 Caché 命令大全 NEW 命令 重点 大纲 参数 描述 NEW的限制 参数 pc variable 示例 注意 使用`NEW`功能的位置 `new`和`kill` `Inclu ...
- 第二十章 Caché 命令大全 QUIT 命令
文章目录 第二十章 Caché 命令大全 QUIT 命令 重点 大纲 参数 描述 在程序代码中 无参数`QUIT` 带参数QUIT 在终端提示下 参数 pc expression 示例 注意 `QUI ...
- 第二十八章 Caché 命令大全 TSTART 命令
文章目录 第二十八章 Caché 命令大全 TSTART 命令 重点 大纲 参数 描述 嵌套事务 SQL Transactions 参数 pc 示例 第二十八章 Caché 命令大全 TSTART 命 ...
- 第八十三章 Caché 函数大全 $ZDATE 函数
文章目录 第八十三章 Caché 函数大全 $ZDATE 函数 大纲 参数 描述 简单的$ZDATE格式 可自定义日期默认 参数 hdate dformat dformat Default dform ...
- 第七十五章 Caché 函数大全 $XECUTE 函数
文章目录 第七十五章 Caché 函数大全 $XECUTE 函数 大纲 参数 描述 参数 code paramlist 示例 第七十五章 Caché 函数大全 $XECUTE 函数 执行指定的命令行. ...
- 第十九章 Caché 函数大全 $INCREMENT 函数
文章目录 第十九章 Caché 函数大全 $INCREMENT 函数 大纲 参数 描述 参数 variable num INCREMENT或INCREMENT或INCREMENT或SEQUENCE $ ...
- 第六十四章 Caché 函数大全 $STACK 函数
文章目录 第六十四章 Caché 函数大全 $STACK 函数 大纲 参数 描述 `$ECODE` 与 `$STACK` `$STACK`的单参数形式 `$STACK`的两个参数形式 示例 注意 跨命 ...
最新文章
- [模拟退火]BZOJ 3680 吊打XXX
- js 为什么0.1+0.2不等于0.3
- jooq 配置oracle_jOOQ配置
- 【华为云技术分享】【论文阅读】增量学习近期进展及未来趋势预测
- MIT6.830 lab1 SimpleDb 实验报告
- java 多线程 int_java多线程问题
- LeetCode题解答案集合(完全版) Python
- 3D打印软件 PrusaSlicer切片软件
- 说说关于访问控制模型
- 4gl程式debug常用技巧
- 解决谷歌浏览器Chrome 代理设置不能上网的问题
- MySQL特异功能之:Impossible WHERE noticed after reading const tables
- 同一个浏览器多用户同时登录的解决方案
- ​Android实现仿QQ登录可编辑下拉菜单
- 通话过程中显示呼叫失败_iphone怎么总是打电话出现呼叫失败求大神解救
- 解决this application failed to start
- Eolink 征文活动- -后端研发需要的API文档工具
- 计算机配置高低怎么看,怎么查看电脑配置?(查看电脑配置高低的三种方法!)...
- Vue3 _ 11. Vue 生命周期 生命周期狗子
- 国内ChatGPT的镜像网站分享
热门文章
- @TableLogic注解
- C++ 实现贪吃蛇游戏(免费附源码)
- iOS获取UUID,并使用keychain存储,可用于封设备
- YAWL工作流软件的介绍和使用
- 【verbs】ibv_query_qp()
- python 中的 Fraction和GCD求最大公约数
- C语言,快速隐藏/显示桌面图标和任务栏
- css3-pie,CSS3pie是什么?
- 计算机启动黑屏时间很长,电脑开机黑屏时间长怎么办?[多图]
- 手把手教你处理单张百度热力图