文章 Duan Haihua · 二月 8, 2023 1m read

示例:在Caché的代码中执行shell命令“free -m |grep -i mem”

方法一:使用%Net.Remote.Utility类中的RunCommandViaZF方法

Set tSC = ##class(%Net.Remote.Utility).RunCommandViaZF("free -m |grep -i mem",.tTempFileName,,,0)

set file=##class(%FileCharacterStream).%New()
s file.Filename=tTempFileName

获得文件流后,再读取文件流中内容即可。

此方法本质是执行$ZF(-1)方法,由于$ZF(-1)在ENSEBLE2016.2后续的版本中不支持,导致后续版本可能会报错。

方法二:使用$ZF(-100)方法

s cmd="free"s tTempFileName=##class(%File).GetDirectory()_"output.txt"s errfile=##class(%File).GetDirectory()_"err.txt"s cmdFlags="/SHELL/STDOUT="""_tTempFileName_"""/STDERR="""_errfile_""""k args
s args = 5s args(1) = "-m"
0
0 217