>>>>> On Tue, 1 Jun 2010 12:03:54 +0200, Lorenzo Villani said: > > I'm trying to use CFFI in order to wrap execve (2). The wrapper also > uses fork (2) and wait (2). While I have absolutely no problems with > execve or fork I'm stumbling on a problem with wait. > > Wait takes a pointer to an int to store child process' status. The > problem is: after the call to wait the value stored in the pointer is > the same as before the call. > > I am using CFFI 0.10.5 and GNU CLISP 2.47 on Fedora 13.
Check the value returned by c-wait, because it sounds like it is getting an error. If it returns -1, then you need to check errno. You should also use unwind-protect to ensure that foreign-free is called (or use with-foreign-pointer instead of foreign-alloc and foreign-free). I don't know about CLISP, but your code will not work reliably if the Lisp implementation calls wait itself (e.g. in response to SIGCHLD). If possible, I would use a implementation-supplied function instead of trying to implement execute-program yourself. __Martin _______________________________________________ cffi-devel mailing list cffi-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel