Comments 5
Есть только одна большая проблема, длина командной строки ограничена 256 символами, что может очень сильно мешать.
плюс ко всему нет возможности прочитать отдельно лог ошибок
мой пример лишен этих проблем
плюс ко всему нет возможности прочитать отдельно лог ошибок
мой пример лишен этих проблем
ClassMethod ExecuteCommand(cmd As %String, errmsg As %String, Output result As %String, display = 0) As %Status
{
s tmpLog=##class(%FileBinaryStream).%New()
d tmpLog.Write(""),tmpLog.SaveStream()
s errLog=##class(%FileBinaryStream).%New()
d errLog.Write(""),errLog.SaveStream()
s ec=$zf(-1,cmd_" 1>"""_tmpLog.Filename_""" 2>"""_errLog.Filename_"""")
i display d tmpLog.OutputToDevice()
if $isobject($g(errmsg)) {
d errmsg.CopyFrom(errLog)
} else {
s errmsg=errLog.Read()
}
if $isobject($g(result)) {
d result.CopyFrom(tmpLog)
} else {
s result=""
while 'tmpLog.AtEnd {
s result=result_tmpLog.Read()
}
}
d errLog.Clear()
d tmpLog.Clear()
q $$$OK
}
Документация:
- %Net.Remote.Utility:RunCommandViaCPIPE()
- %Net.Remote.Utility:RunCommandViaZF()
Sign up to leave a comment.
Исполнение команд операционной системы на сервере Caché