lunedì 19 ottobre 2009

La alarm in Ruby (che goduria ereditare anche le funzioni obsolete del C)

% cat alarm.rb
require 'dl/import'
module Alarm
extend DL::Importable
if RUBY_PLATFORM =~ /darwin/
so_ext = 'dylib'
else
so_ext = 'so'
end
dlload "libc.#{so_ext}"
extern "unsigned int alarm(unsigned int)"
end
trap("ALRM") do
puts "Alarm!"
exit
end
Alarm.alarm(3)
loop {}
% ruby alarm.rb
Alarm!
La versione per la Beagleboard (su cui ho la Narcissus e Ruby 1.9) è solo leggermente differente:

require 'dl/import'

module Alarm
extend DL::Importer
dlload "/lib/libc.so"
extern "unsigned int alarm(unsigned int)"
end

trap("ALRM") do
puts "Alarm!"
exit
end

Alarm.alarm(3)

loop {}

Nessun commento:

Posta un commento