Я пытаюсь запустить исполняемый файл swat_edit.exe в R. Он отлично работает, когда я запускаю его непосредственно в командной строке, а также когда я запускаю его непосредственно на вкладке «Терминал» в R. Однако, когда я пытаюсь написать функцию в R для запуска исполняемого файла, я получаю сообщение об ошибке (я получаю ряд различных ошибок ...).
Я пытался использовать разные методы запуска файла:
1: я использовал system ("swat_edit"), которая возвращает следующую ошибку:
Unhandled Exception: System.IO.IOException: The handle is invalid.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.Console.set_CursorVisible(Boolean value)
at SWEdit.Program.Run(String[] args)
at SWEdit.Program.Main(String[] args)
[1] 17234
2: я использовал shell ("swat_edit"), который возвращает ту же ошибку, что и (1).
3: я использовал shell.exec ("swat_edit"). Это работает, но открывает исполняемый файл в новом окне, которое затем запускается в течение нескольких секунд и закрывается (как и предполагалось). Мне нужно, чтобы программа работала в окне терминала R, чтобы она могла выполнять много итераций в фоновом режиме, не мешая другим вещам. Это недопустимый вариант.
4: я попытался использовать TerminalSend (ID, "swat_edit") (из пакета rstudioapi). Это работает в том, что она отправляет команду в окно терминала в R. Когда я перехожу туда и нажимаю enter, она отлично работает, работает в окне терминала, как я хочу. Тем не менее, мне нужно выполнить много итераций, так что это также невозможно. Я попытался с помощью KeyboardSimulator перейти на вкладку «Терминал» и нажать клавишу ввода (что сработало), но это также не позволяет мне использовать компьютер для других целей во время выполнения моего кода.
5: я попытался использовать TerminalExecute ("swat_edit"), который возвращает следующий код ошибки:
Error calling capture_console_output: 87
[Process completed]
[Exit code: -532462766]
6: я попытался создать файл python, который запускает swat_edit.exe, а затем запустить этот файл в R. Файл python работает, когда я запускаю его сам, из командной строки или из терминала в R. Он делает однако, не работает, когда я пытаюсь запустить его в терминале R, используя TerminalExecute (та же ошибка, что и в (5)).
ПРИМЕЧАНИЕ. У меня есть другой исполняемый файл swat.exe (совершенно другая программа), который работает со всеми вышеупомянутыми методами.
Итак, подведем итог: swat_edit.exe отлично работает в командной строке и R-терминале, но не работает, когда я пытаюсь запустить его с использованием R-кода (либо system (), shell (), либо TerminalExecute ().
Я не могу понять разницу между terminalExecute () и вводом строки в терминал и нажатием Enter, но, видимо, между ними что-то происходит ...
Воспроизведение этого будет утомительно, поскольку в нем используются внешние программы, но если у кого-то есть какие-либо представления о сообщениях об ошибках или о том, как я могу скопировать строку и запустить ее в терминале без каких-либо помех, это было бы очень полезно.
РЕДАКТИРОВАТЬ: Я нашел метод, который решает мою проблему. Я создал .bat файл, который запускает swat_edit свернутым. Мне удалось запустить этот файл .bat с помощью функции оболочки (или любой другой команды, о которой я говорил) в R. Это не отвечает на вопрос, почему у меня возникли проблемы, которые я описал, и не позволяет мне запустить swat_edit в терминал R, но для меня этого достаточно.
Файл .bat был просто следующим:
«START / MIN / WAIT C: \ ~ \ SWAT_Edit.exe»