Handle a signal: Difference between revisions
Content added Content deleted
Line 454: | Line 454: | ||
10 |
10 |
||
Ran for 4901/1000 seconds |
Ran for 4901/1000 seconds |
||
</pre> |
|||
=={{header|Crystal}}== |
|||
<lang ruby>start = Time.utc |
|||
ch = Channel(Int32 | Symbol).new |
|||
spawn do |
|||
i = 0 |
|||
loop do |
|||
sleep 1 |
|||
ch.send(i += 1) |
|||
end |
|||
end |
|||
Signal::INT.trap do |
|||
Signal::INT.reset |
|||
ch.send(:kill) |
|||
end |
|||
loop do |
|||
x = ch.receive |
|||
break if x == :kill |
|||
puts x |
|||
end |
|||
elapsed = Time.utc - start |
|||
puts "Program has run for %5.3f seconds." % elapsed.total_seconds</lang> |
|||
<pre> |
|||
1 |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
|||
^CProgram has run for 5.093 seconds. |
|||
</pre> |
</pre> |
||