-// this function is called when the process terminates from port specific
-// callback function and is common to all ports (src/unix/utilsunx.cpp)
-extern WXDLLIMPEXP_BASE void wxHandleProcessTermination(wxEndProcessData *proc_data);
-
-// This function is called to associate the port-specific callback with the
-// child process. The return valus is port-specific.
-//
-// The file descriptor 'fd' is descriptor of a dummy pipe opened between the
-// parent and the child. No data are written to or read from this pipe, its
-// sole purpose is that the child process will close it when it terminates and
-// the parent will be notified about it if it looks at 'fd' (e.g. using
-// select()).
-//
-// wxAddProcessCallback() does whatever is necessary to ensure that 'fd' is
-// periodically (typically every event loop iteration) checked for its status
-// and that wxHandleProcessTermination() is called once 'fd' indicates the
-// child terminated.
-extern WXDLLIMPEXP_CORE int wxAddProcessCallback(wxEndProcessData *proc_data, int fd);
-
-#if defined(__WXMAC__) || defined(__WXCOCOA__)
-// For ports (e.g. DARWIN) which can add callbacks based on the pid
-extern int wxAddProcessCallbackForPid(wxEndProcessData *proc_data, int pid);
-#endif
+
+private:
+ // SIGCHLD signal handler that checks whether any of the currently running
+ // children have exited.
+ static void OnSomeChildExited(int sig);
+
+ // All currently running child processes indexed by their PID.
+ //
+ // Notice that the container doesn't own its elements.
+ WX_DECLARE_HASH_MAP(int, wxExecuteData*, wxIntegerHash, wxIntegerEqual,
+ ChildProcessesData);
+ static ChildProcessesData ms_childProcesses;
+
+ wxDECLARE_NO_COPY_CLASS(wxExecuteData);
+};