小编典典

从R运行.exe:Linux而非Windows上的状态127警告

linux

我正在.exe使用R从R 调用system("script.exe object")

我懂了Warning: running command had status 127。我知道这意味着.exe找不到该文件。

我在窗户上。当我使用它shell而不是system它的魅力时。但是,我正在设计一个Shiny应用程序,该应用程序将部署在Linux环境(shinyapps.io)中。这就是为什么我需要使用system

编辑

在Windows上,它可以system(paste("cmd.exe /c", "script.exe object"), intern = FALSE, wait = TRUE)按照此处的建议使用。但是当我在Linux上部署应用程序时却没有。

暗示

在Windows本地上,如果我systemsystem2:替换system2(paste("cmd.exe /c", "script.exe object"), wait = TRUE),它会status 127发出警告,并且 输出与在Linux上部署的应用程序中
输出完全相同

在此处创建可复制的示例很困难,但是如果需要,我可以尝试。请告诉我。

上下文:基本上.exe是一个黑匣子(编译的C++代码),它使用.txt文件作为输入并输出另一个.txt文件。我正在使用R将.txt文件转储到当前工作目录中,然后回读由.exe(在.exe存储该文件的当前工作目录中创建的)生成的.txt文件。


阅读 420

收藏
2020-06-07

共1个答案

小编典典

问题实际上源于以下事实:.exe文件仅是Windows的可执行文件。它在Linux环境中不是开箱即用的(您可以使用WINE,但是在我的情况下这是不可能的,因为我是从R内部调用可执行文件的,我sudo在虚拟机所使用的虚拟机上没有任何权限或任何权限。我的应用的主机)。因此,我在Linux虚拟机上编译了使用g
编写的c 代码,并使用了.out文件而不是.exe

然后在我的R脚本中,我只需要以下两个调用:

system("chmod a+x script.out") # to make Linux understand that the file is an executable system("./script.out object") # to run the script

2020-06-07