+typedef struct {
+ gint pid, tag;
+ wxProcess *process;
+} wxEndProcessData;
+
+static void GTK_EndProcessDetector(gpointer data, gint source,
+ GdkInputCondition condition)
+{
+ wxEndProcessData *proc_data = (wxEndProcessData *)data;
+ int pid;
+
+ pid = (proc_data->pid > 0) ? proc_data->pid : -(proc_data->pid);
+
+ wait4(proc_data->pid, NULL, 0, NULL);
+
+ close(source);
+ gdk_input_remove(proc_data->tag);
+
+ if (proc_data->process)
+ proc_data->process->OnTerminate(proc_data->pid);
+
+ if (proc_data->pid > 0)
+ delete proc_data;
+ else
+ proc_data->pid = 0;
+};
+
+long wxExecute( char **argv, bool sync, wxProcess *process )