Возможно, я подхожу к этому в неправильном направлении, поэтому любая помощь будет принята.
У меня есть скрипт на Ruby, который, помимо прочего, запускает исполняемый файл.Я хочу запустить этот исполняемый файл - в настоящее время запускается с помощью системы "" - и затем продолжить со сценарием.Когда скрипт завершится, я хочу, чтобы он вышел, но оставил исполняемый файл запущенным.
Первоначально у меня было следующее
# Do some work
# Start the executable
system("executable_to_run.exe")
# Continue working
Но исполняемый файл_to_run.exe является блокирующим исполняемым файлом, и система "" не завершит работу, пока исполняемый файл не завершит работу (чего я не хочу)
Так что теперь у меня есть что-то вроде этого (резко сокращено)
# Do some work
# Start the executable on it's one thread
Thread.new do
system("executable_to_run.exe")
end
# Continue working
Это хорошо работает, поскольку мой сценарий может продолжать работать, пока поток запускает исполняемый файл в фоновом режиме.К сожалению, когда мой сценарий завершает работу, исполняемый поток все еще работает и не завершится, пока поток не сможет выйти.Если я убиваю исполняемый файл, поток завершается и сценарий завершается.
Поэтому мне нужно вызвать триггер «executetable_to_run.exe» и просто оставить его работающим в фоновом режиме.
Яиспользование Ruby 1.8.7 в Windows, что означает, что fork не реализован.Я не могу обновиться до 1.9, так как есть внутренние и внешние командные зависимости, которые мне нужно сначала разрешить (и которые не будут сделаны в ближайшее время).
Я пробовал
- Запуск процесса с помощью команды 'start', но он по-прежнему блокирует
- Вызов Thread.kill в исполняемом потоке, но он все еще требует уничтожения исполняемого файла
Так что же это такое?Я могу сделать в Ruby, и я что-то упускаю, или у меня проблема, потому что я не могу использовать Fork?
Заранее спасибо