Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用返回代码手动退出Smalltalk vm?_Smalltalk_Gnu Smalltalk - Fatal编程技术网

是否可以使用返回代码手动退出Smalltalk vm?

是否可以使用返回代码手动退出Smalltalk vm?,smalltalk,gnu-smalltalk,Smalltalk,Gnu Smalltalk,基本上,GNU Smalltalk 3.2.5中是否有类似的退出(-1)功能?或者有没有一种方法可以配置它,以便在执行过程中遇到错误时返回非零退出代码?我希望能够检测gst是否成功执行了st代码文件,或者是否发生了错误(语法或运行时/异常)。是的,可以使用ObjectMemory退出:0或ObjectMemory退出:1等。对于ObjectMemory退出: ObjectMemory class >> quit: exitStatus [ "Quit the Smalltal

基本上,GNU Smalltalk 3.2.5中是否有类似的退出(-1)功能?或者有没有一种方法可以配置它,以便在执行过程中遇到错误时返回非零退出代码?我希望能够检测
gst
是否成功执行了st代码文件,或者是否发生了错误(语法或运行时/异常)。

是的,可以使用
ObjectMemory退出:0
ObjectMemory退出:1
等。对于
ObjectMemory退出:

ObjectMemory class >> quit: exitStatus [
    "Quit the Smalltalk environment, passing the exitStatus integer
     to the OS. Files are closed and other similar cleanups occur."

    <category: 'builtins'>
    <primitive: VMpr_ObjectMemory_quit>
    SystemExceptions.WrongClass signalOn: exitStatus mustBe: SmallInteger
    ]
ObjectMemory类>>退出:退出状态[
“退出Smalltalk环境,传递exitStatus整数
文件被关闭,并进行其他类似的清理。”
SystemExceptions.ErrorClass signalOn:exitStatus必须为:SmallInteger
]

在源代码中搜索“退出”将提供其实际应用的示例。

我知道Smalltalk对其虚拟机之外的任何东西都没有强烈的概念,它的虚拟机也可能在某些PC上运行,并且需要有一种与之通信的方式。但是
gst
已经支持
self-halt
停止执行,所以我想知道是否有类似
self-halt:exitCode
的东西(或者为什么没有)。仅仅将其打印到stdout显然不是一个选项,因为没有可靠的方法来区分代码本身输出的文本和这种临时错误代码(特别是如果您对程序输出几乎没有控制权,即如果它是外部的),如果程序不能完全控制stderr,这也不理想(此外,编译器可能会遇到一些语法错误)。问题不在于日志记录,而在于Smalltalk与外部操作系统的通信(即,exitCode经常用于判断程序是否成功,以及exitCode上的许多其他程序是否正确设置)。无法与外部操作系统/系统正确通信只是限制了Smalltalk作为一种语言的使用情况。谢谢!这正是我想要的!不太容易找到=)