diff --git o/unixsys.c o/unixsys.c
index 6cc080193..bbdeb6af9 100644
--- o/unixsys.c
+++ 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,10 +60,20 @@ 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));
+
   }
 
   massert(pid>0);
