Добавлено: 21 июн 2004, 11:35
fa3a, программа написана на ruby. GUI через биндинг к сишной библиотеке. Соответсвенно нужна сама либа, биндинг, и ruby.
Хм.. не знал, что из скриптовых языков можно сишные функции вызывать! Т.е. получается, что я могу из перлового скрипта например вызвать функцию, которую я на писал на С++ и слинковал в статическую либу?? Круто!Позволяет использовать к примеру из скриптовых языков вызывать функции определенные с библиотеках на C
Это называется extension, расширение. Всегда так можно было делать, и если говорить о Perl или любом другом современном скриптовом языке, то огромное количество библиотек включают себя писанные на C расширения. Достаточно запустить командуfa3a писал(а):Хм.. не знал, что из скриптовых языков можно сишные функции вызывать! Т.е. получается, что я могу из перлового скрипта например вызвать функцию, которую я на писал на С++ и слинковал в статическую либу?? Круто!Позволяет использовать к примеру из скриптовых языков вызывать функции определенные с библиотеках на C
Код: Выделить всё
find /usr/lib/perl -name '*so'
Код: Выделить всё
# setrlimit/getrlimit implementation
#
# for CPU time set
#
# Author:: Vladimir Shahov
# Inspired by:: Alexander Bokovoy
require "dl/import"
require "dl/struct"
module LIBC
extend DL::Importable
begin
dlload "libc.so.6"
rescue
dlload "libc.so.5"
end
extern "int getrlimit(int, struct rlimit *)"
extern "int setrlimit(int, const struct rlimit *)"
Rlimit=struct [
"ulong rlim_cur",
"ulong rlim_max",
]
# from /usr/include/bits/resource.h: RLIMIT_CPU = 0
RLIMIT_CPU=0x0
end
# class Ulimit
# set and get CPU (ulimit -t) limits
#
# has problems, when call from non-root users
class Ulimit
UNLIMITED_CPU=4294967295
def Ulimit.set_cpu(new_limit=UNLIMITED_CPU)
val=LIBC::Rlimit.malloc
val.rlim_cur=new_limit
val.rlim_max=new_limit
return LIBC::setrlimit(LIBC::RLIMIT_CPU, val)
end
def Ulimit.get_cpu
val=LIBC::Rlimit.malloc
LIBC::getrlimit(LIBC::RLIMIT_CPU, val)
return val.rlim_cur
end