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))))