示例:在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
ObjectScriptObjectScript
获得文件流后,再读取文件流中内容即可。
此方法本质是执行$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 = 5
s args(1) = "-m"
s args(2) = "|"
s args(3) = "grep"
s args(4) = "-i"
s args(5) = "mem"
s tSC=$ZF(-100,cmdFlags,cmd,.args)
set file=##class(%FileCharacterStream).%New()
s file.Filename=tTempFileName
ObjectScriptObjectScript
获得文件流后,再读取文件流中内容即可。
对于$ZF(-100)的使用方法请参考文档:https://docs.intersystems.com/iris20211/csp/docbook/Doc.View.cls?KEY=RCOS_fzf-100