В настоящее время я пытаюсь определить имя родительского процесса, который запустил скрипт Ruby. Я могу быть очень неправ (и в этом случае не стесняйтесь указывать мне на более простой способ работы), но я понимаю, что единственный способ сделать это - использовать библиотеку FFI.
Итак, я установил необходимые пакеты (я на Ubuntu 10.10, поэтому я запустил sudo apt-get install libffi-*
, который устанавливает помимо прочего libffi-ruby1.8 и libffi-dev), затем вставил пример, доступный здесь в irb1.8, который потерпел неудачу, как вы можете видеть ниже:
$ irb
irb(main):001:0> require 'ffi'
=> true
irb(main):002:0>
irb(main):003:0* module GetPid
irb(main):004:1> extend FFI::Library
irb(main):005:1>
irb(main):006:1* attach_function :getpid, [], :uint
irb(main):007:1> end
LoadError: no library specified
from /usr/lib/ruby/1.8/ffi/library.rb:79:in `ffi_libraries'
from /usr/lib/ruby/1.8/ffi/library.rb:106:in `attach_function'
from (irb):6
from /usr/lib/ruby/1.8/ffi/memorypointer.rb:33
irb(main):008:0>
irb(main):009:0* puts GetPid.getpid
NoMethodError: undefined method `getpid' for GetPid:Module
from (irb):9
from /usr/lib/ruby/1.8/ffi/memorypointer.rb:33
irb(main):010:0>
Кто-нибудь знает, что я делаю не так?