- // there is no return after successful exec()
- fprintf(stderr, _("Can't execute '%s'\n"), *argv);
-
- _exit(-1);
- }
- else
- {
- // we're in parent
- close(end_proc_detect[1]); // close writing side
- data->tag = gdk_input_add(end_proc_detect[0], GDK_INPUT_READ,
- GTK_EndProcessDetector, (gpointer)data);
- if ( sync )
- {
- wxASSERT_MSG( !process, "wxProcess param ignored for sync exec" );
- data->process = NULL;
-
- // sync execution: indicate it by negating the pid
- data->pid = -pid;
-
- // it will be set to 0 from GTK_EndProcessDetector
- while (data->pid != 0)
- wxYield();
-
- int exitcode = data->exitcode;
-
- delete data;
-
- return exitcode;
- }
- else
- {
- // async execution, nothing special to do - caller will be
- // notified about the process terminationif process != NULL, data
- // will be deleted in GTK_EndProcessDetector
- data->process = process;
- data->pid = pid;
-
- return pid;
- }
- }