Selon ce site (bien que les informations puissent être obsolètes car il s'agit d'informations de 2009) https://zegoggl.es/2009/05/ruby-ffi-recipes.html
Lorsqu'il y a une définition de fonction comme ci-dessous
int execvp(const char *file, char *const argv[]);
Ruby-FFI écrit:
module Exec
extend FFI::Library
attach_function :execvp, [:string, :pointer], :int
end
Lors de l'utilisation ...
strptrs = []
strptrs << FFI::MemoryPointer.from_string("vim")
strptrs << FFI::MemoryPointer.from_string("/tmp/foo")
strptrs << nil
# Now load all the pointers into a native memory block
argv = FFI::MemoryPointer.new(:pointer, strptrs.length)
strptrs.each_with_index do |p, i|
argv[i].put_pointer(0, p)
end
Exec.execvp("vim", argv)
Si vous le lisez, vous saurez ce que vous faites, mais c'est un peu ennuyeux.
Si vous connaissez un meilleur moyen, veuillez laisser un commentaire.
C'est tout pour cet article.