Laut dieser Website (obwohl die Informationen möglicherweise veraltet sind, da es sich um Informationen aus dem Jahr 2009 handelt) https://zegoggl.es/2009/05/ruby-ffi-recipes.html
Wenn es eine Funktionsdefinition wie unten gibt
int execvp(const char *file, char *const argv[]);
Ruby-FFI schreibt:
module Exec
extend FFI::Library
attach_function :execvp, [:string, :pointer], :int
end
Beim Benutzen ...
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)
Wenn Sie es lesen, wissen Sie sofort, was Sie tun, aber es ist ein wenig nervig.
Wenn Sie einen besseren Weg kennen, hinterlassen Sie bitte einen Kommentar.
Das ist alles für diesen Artikel.
Recommended Posts