- /* fork the process */
-#if defined(sun) || defined(__ultrix) || defined(__bsdi__)
- pid_t pid = vfork();
-#else
- pid_t pid = fork();
-#endif
- if (pid == -1)
- {
- wxLogSysError( "Fork failed" );
- return 0;
- }
- else if (pid == 0)
- {
- // we're in child
- close(end_proc_detect[0]); // close reading side
- // These three lines close the open file descriptors to
- // to avoid any input/output which might block the process
- // or irritate the user. If one wants proper IO for the sub-
- // process, the "right thing to do" is to start an xterm executing
- // it.
- close(STDIN_FILENO);
- close(STDOUT_FILENO);
- close(STDERR_FILENO);
- // some programs complain about sterr not being open, so
- // redirect them:
- open("/dev/null", O_RDONLY); // stdin
- open("/dev/null", O_WRONLY); // stdout
- open("/dev/null", O_WRONLY); // stderr
-
-
-#ifdef _AIX
- execvp ((const char *)*argv, (const char **)argv);
-#else
- execvp (*argv, argv);
-#endif
- // there is no return after successful exec()
- wxLogSysError( "Can't execute '%s'", *argv);