On Sun, 2009-03-29 at 12:11 +0200, Leslie P. Polzer wrote:
> Hi,
> 
> I have tried to use execv() from glibc in SBCL, but it's either
> not compatible with SBCL for some reason or I'm not calling it
> correctly.
> 
> Perhaps one of you guys can spot mistakes here:

you haven't read its man page carefully

> CL-USER(2): (use-package :cffi)
> 
> T
> CL-USER(3): (define-foreign-library libc (:unix "libc.so.6"))
> 
> LIBC
> CL-USER(4): (use-foreign-library libc)
> 
> #<CFFI::FOREIGN-LIBRARY {B277599}>
> CL-USER(7): (defcfun "execv" :int (path :string) (args :pointer))
> 
> EXECV
> CL-USER(14): (execv "/bin/chmod" (null-pointer))
> zsh: segmentation fault  rlwrap sbcl

(defcfun (%execv "execv") :int (path :string) (args :pointer))

(defun execv/0 (binary)
  (check-type binary string)
  (with-foreign-string (cstring binary)
    (with-foreign-object (v :pointer 2)
      (setf (mem-aref v :pointer 0) cstring)
      (setf (mem-aref v :pointer 1) (null-pointer))
      (%execv binary v))))

-- 
Stelian Ionescu a.k.a. fe[nl]ix
Quidquid latine dictum sit, altum videtur.

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel

Reply via email to