Julia-如何从REPL启动可执行文件

Julia-如何从REPL启动可执行文件,julia,executable,Julia,Executable,我正试图通过Julias REPL打开一个程序。我希望结果就像我在文件资源管理器中双击了.exe文件一样 我尝试过使用run(`program.exe`),但找不到该文件。然后我意识到前面需要一个命令,所以我试着运行(`run program.exe`)。这似乎找到了程序,但它立即崩溃。我假设您的计算机的操作系统是Windows 您可能需要使用可执行文件的完整路径,在使用`创建命令对象时输入路径的好方法是创建一个字符串并插入它。否则,空格和特殊字符可能会产生问题。举个例子, path = "C:

我正试图通过Julias REPL打开一个程序。我希望结果就像我在文件资源管理器中双击了.exe文件一样


我尝试过使用
run(`program.exe`)
,但找不到该文件。然后我意识到前面需要一个命令,所以我试着运行(`run program.exe`)。这似乎找到了程序,但它立即崩溃。

我假设您的计算机的操作系统是Windows

您可能需要使用可执行文件的完整路径,在使用
`
创建命令对象时输入路径的好方法是创建一个字符串并插入它。否则,空格和特殊字符可能会产生问题。举个例子,

path = "C:\\Program Files\\Mozilla Firefox\\firefox.exe"
run(`$path`)
但是,以这种方式运行并不总是像双击EXE文件一样。正在运行的可执行文件可能仍然连接到终端,并且在创建的进程退出之前,您不能在Julia REPL中运行新命令。例如,请尝试以下操作,并在不关闭窗口的情况下在Julia REPL中输入命令:

run(`notepad`)
如果不希望出现这种行为,可以使用
run
wait=false
关键字选项

run(`$path`, wait=false)
如果wait为false,则进程异步运行,进程的I/O流被定向到
devnull
。这实际上并没有分离进程。如果杀死进程,可执行文件的进程也将被杀死

您可以改为使用
cmd/c start
在另一个
cmd
窗口中打开可执行文件。可执行文件的进程应该与Julia分离

run(`cmd /c start $path`) 

您可以在Julia手册的部分中找到有关运行外部程序的更多信息

我假定您的计算机的操作系统是Windows

您可能需要使用可执行文件的完整路径,在使用
`
创建命令对象时输入路径的好方法是创建一个字符串并插入它。否则,空格和特殊字符可能会产生问题。举个例子,

path = "C:\\Program Files\\Mozilla Firefox\\firefox.exe"
run(`$path`)
但是,以这种方式运行并不总是像双击EXE文件一样。正在运行的可执行文件可能仍然连接到终端,并且在创建的进程退出之前,您不能在Julia REPL中运行新命令。例如,请尝试以下操作,并在不关闭窗口的情况下在Julia REPL中输入命令:

run(`notepad`)
如果不希望出现这种行为,可以使用
run
wait=false
关键字选项

run(`$path`, wait=false)
如果wait为false,则进程异步运行,进程的I/O流被定向到
devnull
。这实际上并没有分离进程。如果杀死进程,可执行文件的进程也将被杀死

您可以改为使用
cmd/c start
在另一个
cmd
窗口中打开可执行文件。可执行文件的进程应该与Julia分离

run(`cmd /c start $path`) 

您可以在Julia手册的部分中找到有关运行外部程序的更多信息

你试过运行(到可执行文件/program.exe的完整路径)吗?是的,我试过了。它给出了与之前相同的错误消息(IOError:无法生成
xfoil.exe
:未知错误(未知)),其中xfoil.exe是程序。hckr给出的答案(带有
cmd/c
)将是我的第二步。它对你有用吗(我看你还没有接受它)?对不起,我在研究hckr的答案之前回答了你,并且已经接受了。出现了一些异常情况,导致您的响应给出了一个已解决的错误。您是否尝试过运行(完整路径到可执行文件/program.exe)?是的,我尝试过。它给出了与之前相同的错误消息(IOError:无法生成
xfoil.exe
:未知错误(未知)),其中xfoil.exe是程序。hckr给出的答案(带有
cmd/c
)将是我的第二步。它对你有用吗(我看你还没有接受它)?对不起,我在研究hckr的答案之前回答了你,并且已经接受了。有一些不寻常的情况使得您的回复出现了错误,这些错误已经得到了解决。谢谢您。现在可以了。结果表明,可执行文件不知何故已损坏,并在尝试运行时向julia返回未知错误。cmd start命令理解这一点,并且能够给出一个有意义的错误。现在,应用程序将在所需的REPL中打开。您对如何将此概念移动到
打开(`program.exe`,“r+”)
区域有何见解?以这种方式启动时,程序仍然会崩溃。@hckr,您不需要使用
cmd/c start
-run
run
命令有一个选项-例如
run(`notepad`,wait=false)
@Przemyslaw Szufel:有时您需要
cmd/c
,例如,您必须使用它在Windows下运行
dir
。评论是关于
cmd/c start
而不是
cmd/c
本身
start
分离进程,可以使用
wait=false
。@hckr我让它工作了。要读取/写入程序,我必须使用:
p=open(pipeline(`program.exe`),“r+”
,然后使用`write(p,“foo”)。谢谢你的帮助!谢谢你。现在可以了。结果表明,可执行文件不知何故已损坏,并在尝试运行时向julia返回未知错误。cmd start命令理解这一点,并且能够给出一个有意义的错误。现在,应用程序将在所需的REPL中打开。您对如何将此概念移动到
打开(`program.exe`,“r+”)
区域有何见解?以这种方式启动时,程序仍然会崩溃。@hckr,您不需要使用
cmd/c start
-run
run
命令有一个选项-例如
run(`notepad`,wait=false)
@Przemyslaw Szufel:有时您需要
cmd/c
,例如,您必须使用它在Windows下运行
dir
。评论是关于
cmd的