# External programs

**URL:** <https://www.ruby-forum.com/t/external-programs/165599>\
**Category:** Rails\
**Created:** [April 15, 2009, 4:41pm UTC](https://www.ruby-forum.com/t/external-programs/165599 "2009-04-15T16:41:28Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![pipistrellrf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/f07891/32.png) [@pipistrellrf](https://www.ruby-forum.com/u/pipistrellrf)\
**Post date:** [April 15, 2009, 4:41pm UTC](https://www.ruby-forum.com/t/external-programs/165599/1 "2009-04-15T16:41:28Z")

</div>

how i can follow to execute external programs: define, that they don’t  
hung with Kernel method system or another? may be use timeout?

excuse me for my bad english 🙂

---

<div class="post-metadata">

**Author:** ![pipistrellrf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/f07891/32.png) [@pipistrellrf](https://www.ruby-forum.com/u/pipistrellrf)\
**Post date:** [April 15, 2009, 5:16pm UTC](https://www.ruby-forum.com/t/external-programs/165599/2 "2009-04-15T17:16:22Z")

</div>

you may try something along this line:

timeout(10) do  
%x{sleep 12}  
end

rescue Timeout::Error

# Do something to handle the time out.

puts “The sleep command timed out”  
end

Hope that gets you going in a good direction.  
BenH

On Apr 15, 7:41 am, Svetlana Vt [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![pipistrellrf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/f07891/32.png) [@pipistrellrf](https://www.ruby-forum.com/u/pipistrellrf)\
**Post date:** [April 15, 2009, 5:29pm UTC](https://www.ruby-forum.com/t/external-programs/165599/3 "2009-04-15T17:29:17Z")

</div>

Excuse the self reply - something that comes in handy is to capture  
the exit status of the external application. To do this use  
$?.exitstatus

%x{echo “Hello World”}  
puts $?.exitstatus
