#include <ace/Process_Manager.h >
class ACE_Process_Manager {
public:friend class ACE_Process_Control;enum{ DEFAULT_SIZE = 100 };ACE_Process_Manager ( size_t size = ACE_Process_Manager::DEFAULT_SIZE );~ACE_Process_Manager (void);int open (size_t size = DEFAULT_SIZE);int close (void);pid_t spawn (ACE_Process_Options &options);int spawn_n (size_t n, ACE_Process_Options &options);int wait (ACE_Time_Value *timeout = 0);int terminate (pid_t pid);int remove (pid_t pid);int reap ( pid_t pid = -1, int *stat_loc = 0, int options = WNOHANG );void dump (void) const;ACE_ALLOC_HOOK_DECLARE;private:int resize (size_t);int find_proc (pid_t p_id);int insert_proc (pid_t p_id);int append_proc (pid_t p_id);ACE_Process_Descriptor *proc_table_;size_t max_table_size_;size_t current_count_;ACE_Thread_Mutex lock_;ACE_Condition_Thread_Mutex zero_cond_;};
ACE_Process_Manager (size_t size = ACE_Process_Manager::DEFAULT_SIZE);
~ACE_Process_Manager (void);
int open (size_t size = DEFAULT_SIZE);
int close (void);
pid_t spawn (ACE_Process_Options &options);
options).
Returns: on success a unique group id that can be used to control other processs added to the same group. On failure, returns -1.
int spawn_n (size_t n, ACE_Process_Options &options);
Returns: on success a unique group id that can be used to control all of the processs in the same group. On failure, returns -1.
int wait (ACE_Time_Value *timeout = 0);
timeout
expires. Returns 0 on success and -1 on failure.
int terminate (pid_t pid);
pid.
int remove (pid_t pid);
pid from the table. This is typically called by
a signal handler that has just reaped SIGCHILD.
int reap (pid_t pid = -1, int *stat_loc = 0, int options = WNOHANG);
SIGCHLD by calling ACE_OS::waitpid.
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
ACE_Thread_Mutex lock_;
ACE_Condition_Thread_Mutex zero_cond_;