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