I'm looking at ruby-ffi 0.2.0 with MRI 1.8.7 (haven't tried with
rubinius yet) and I can get to attach to setproctitle(3) defined like
this:
void
setproctitle(const char *fmt, ...);
···
-----
require "ffi"
#
module LibC
extend FFI::Library
attach_function :setproctitle, [:string, :string], []
end
LibC.setproctitle("Ruby: executing %s", $0)
----
gives
-----
FFI::NotFoundError: Function 'setproctitle' not found in [[current
process]]
from
/opt/local/lib/ruby/gems/1.8/gems/ffi-0.2.0/lib/ffi/library.rb:65:in
`attach_function'
-----
Any idea?
--
Posted via http://www.ruby-forum.com/.
This would be defined like this:
module LibC
extend FFI::Library
attach_function : setproctitle, [:string, :varargs], :void
end
And then used like this:
LibC.setproctitle("%d-%d", [:string, "foo", :int, 42])
···
On 16 janv. 09, at 18:00, Ollivier Robert wrote:
I'm looking at ruby-ffi 0.2.0 with MRI 1.8.7 (haven't tried with
rubinius yet) and I can get to attach to setproctitle(3) defined like
this:
void
setproctitle(const char *fmt, ...);
--
Luc Heinrich - luc@honk-honk.com
Er, the format string should have obviously been "%s-%d" here, sorry.
···
On 17 janv. 09, at 11:31, Luc Heinrich wrote:
LibC.setproctitle("%d-%d", [:string, "foo", :int, 42])
--
Luc Heinrich - luc@honk-honk.com
In article <AE36BD1B-11A2-4135-AB0E-33E531C2DADA@honk-honk.com>,
···
Luc Heinrich <luc@honk-honk.com> wrote:
This would be defined like this:
The following does not work:
-----
module LibC
extend FFI::Library
attach_function :setproctitle, [:string, :varargs], :void
end
LibC.setproctitle("Ruby: executing %s", [:string, $0])
-----
Same error:
/opt/local/lib/ruby/gems/1.8/gems/ffi-0.2.0/lib/ffi/library.rb:65:in
`attach_function': Function 'setproctitle' not found in [[current process]]
(FFI::NotFoundError) from proc.rb:12
(OS X, 10.5.6, Ruby from MacPorts)
UPDATE: setproctitle may not be available in OS X. Retrying on FreeBSD leads
to this:
/usr/local/lib/ruby/gems/1.8/gems/ffi-0.2.0/lib/ffi/types.rb:18:in `find_type': Unable to resolve type 'stringproc.rb' (FFI::TypeError)
from /usr/local/lib/ruby/gems/1.8/gems/ffi-0.2.0/lib/ffi/variadic.rb:23:in `call'
from (eval):3:in `setproctitle'
from proc.rb:15
--
Ollivier ROBERT -=- EEC/RIF/SEU -=-
Systems Engineering Unit
UPDATE: setproctitle may not be available in OS X.
Right. setproctitle is not available on OS X.
Retrying on FreeBSD leads
to this:
/usr/local/lib/ruby/gems/1.8/gems/ffi-0.2.0/lib/ffi/types.rb:18:in `find_type': Unable to resolve type 'stringproc.rb' (FFI::TypeError)
Yes, and that's because I need some sleep 
This is the right way to call variadic functions using FFI (remove the ):
LibC.setproctitle("Ruby: executing %s", :string, $0)
Sorry about the wrong answers... 
···
On 19 janv. 09, at 12:23, Ollivier Robert wrote:
--
Luc Heinrich - luc@honk-honk.com
In article <17C44979-6A1D-4646-945B-0595C624FBE8@honk-honk.com>,
This is the right way to call variadic functions using FFI (remove the
):
LibC.setproctitle("Ruby: executing %s", :string, $0)
... and the winner is you 
47629 ph S+ 0:00.26 ruby: Ruby: executing proc.rb (ruby)
(some redundancy there...
)
Sorry about the wrong answers... 
No worry, merci.
···
Luc Heinrich <luc@honk-honk.com> wrote:
--
Ollivier ROBERT -=- EEC/RIF/SEU -=-
Systems Engineering Unit