Я хочу запустить потокобезопасный скрипт в Ruby, который вызывает внешнюю программу, а затем проверяет статус выхода этой внешней программы. Каков наилучший способ сделать это? До сих пор я проверял $?
, но я думаю, что я получаю условия гонки с другими частями программы.Потоковый внешний процесс в рубине плюс проверка exitstatus
Вот пример кода:
Thread.new do
`external_program`
if $?.exitstatus == 0
# it worked.
else
# it didn't work.
end
end
В идеале я хотел бы сделать что-то вроде
Process.new(`external_program`).exitstatus
так что exitstatus
был неразрывно связан с этого процесса, а не последним, что завершилось. Есть какой-либо способ сделать это?
Является ли сценарий открытым исходным кодом или частным? –
@ Андрю: с открытым исходным кодом (это мой сценарий). – Peter