FLI question
Hi!
Suppose I have a C function blark I want to call declared like this:
int blark(char **);
It is supposed to be called with a NULL terminated array of strings.
What is the right way to call it from Lisp? This seems to work:
(fli:define-foreign-function (blark "blark" :source)
((arg-1 (:pointer (:pointer :char))))
:result-type :int
:language :ansi-c)
(defun callit (args)
(fli:with-dynamic-foreign-objects ()
(let* ((strings (nconc (mapcar #'fli:convert-to-dynamic-foreign-string
args)
(list nil)))
(array (fli:allocate-dynamic-foreign-object
:type '(:pointer :char)
:initial-contents strings
:nelems (length strings))))
(blark array))))
Is this ok (especially the ``nil'' as terminating NULL pointer)?
Another question: Suppose I fork off a new subprocess from a C
function called via FLI. Do I have to waitpid for it to avoid
zombies? Or does Lispworks handle SIGCHLD or something?
Regards,
--
Nils Goesche
"Don't ask for whom the <CTRL-G> tolls."
PGP key ID 0x42B32FC9