posix_spawn

Camm Maguire <[email protected]>
Newsgroups gmane.lisp.gcl.devel
Message-ID <[email protected]>
Greetings!  I am exercising this patch in case you want to try it out.

modified   gcl/o/unixsys.c
@@ -32,6 +32,8 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #if !defined(__MINGW32__) && !defined(__CYGWIN__)
 
+       #include <spawn.h>
+
 int
 vsystem(const char *command) {
 
@@ -58,11 +60,27 @@ vsystem(const char *command) {
 
   }
 
-  if (!(pid=pvfork())) {
-    errno=0;
-    execvp(*p1,(void *)p1);
-    _exit(128|(errno&0x7f));
+  {
+
+    posix_spawnattr_t attr;
+    posix_spawn_file_actions_t file_actions;
+    extern char **environ;
+
+    massert(!posix_spawn_file_actions_init(&file_actions));
+    massert(!posix_spawnattr_init(&attr));
+
+    massert(!posix_spawnp(&pid, *p1, &file_actions, &attr,  (void *)p1, environ));
+
+    massert(!posix_spawnattr_destroy(&attr));
+    massert(!posix_spawn_file_actions_destroy(&file_actions));
+
   }
+    
+  /* if (!(pid=pvfork())) { */
+  /*   errno=0; */
+  /*   execvp(*p1,(void *)p1); */
+  /*   _exit(128|(errno&0x7f)); */
+  /* } */
 
   massert(pid>0);
   massert(pid==waitpid(pid,&s,0));

Take care,
-- 
Camm Maguire			     		    [email protected]
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.