我可能正在接近这个错误的方向,所以任何帮助,将不胜感激。
我有一个Ruby脚本,其中包括启动一个可执行文件。 我想启动这个可执行文件 – 目前正在使用系统“”触发 – 然后继续执行脚本。 脚本完成后,我希望它退出,但保持可执行文件正在运行。
本来我有以下
# Do some work # Start the executable system("executable_to_run.exe") # Continue working
但是,executable_to_run.exe是一个阻塞的可执行文件,系统“”将不会退出,直到可执行文件结束运行(我不希望它)
所以我现在有这样的东西(大幅减less)
# Do some work # Start the executable on it's one thread Thread.new do system("executable_to_run.exe") end # Continue working
这很好,因为我的脚本可以继续运行,而线程在后台运行可执行文件。 不幸的是,当我的脚本退出时,可执行线程仍在运行,直到线程退出才会退出。 如果我杀死可执行文件,线程退出,脚本退出。
所以我需要做的是触发“executable_to_run.exe”,只是让它在后台运行。
我在Windows上使用Ruby 1.8.7,这意味着fork是未实现的。 我不能升级到1.9,因为有内部和外部的团队依赖,我需要先解决(而且不会很快完成)。
我试过了
那么,这是我可以在Ruby中做的事情,我只是失去了一些东西,或者我有一个问题,因为我不能使用Fork?
提前致谢
失踪的答案应该在Windows上工作。 这是一个跨平台的:
pid = spawn 'some_executable' Process.detach(pid) #tell the OS we're not interested in the exit status
我刚刚尝试,并start
不阻止在Windows 7 x64与Ruby 1.8.7。
system 'start notepad' puts 'Exiting now...'
这显然是Windows特有的。