00001 #ifndef EDG_WORKLOAD_COMMON_PROCESS_SUBPROCESS_H
00002 #define EDG_WORKLOAD_COMMON_PROCESS_SUBPROCESS_H
00003
00004 #include <sys/types.h>
00005
00006 #include "edg/workload/common/common_namespace.h"
00007
00008 COMMON_NAMESPACE_BEGIN {
00009
00010 namespace process {
00011
00012 class Functor;
00013 class Process;
00014
00015 class Subprocess {
00016 friend class Process;
00017
00018 public:
00019 Subprocess( Functor &func );
00020 ~Subprocess( void );
00021
00022 inline bool is_ended( void ) { return this->s_ended; }
00023 inline bool is_signaled( void ) { return this->s_signaled; }
00024 inline int exit_code( void ) { return this->s_exit; }
00025 inline int signal_code( void ) { return this->s_signal; }
00026 inline pid_t pid( void ) { return this->s_pid; }
00027
00028 int signal( int sig );
00029
00030 private:
00031 Subprocess( pid_t pid );
00032
00033 void set_status( int status );
00034
00035 Subprocess( const Subprocess &proc );
00036 Subprocess &operator=( const Subprocess &proc );
00037
00038 bool s_ended, s_signaled;
00039 int s_exit, s_signal;
00040 pid_t s_pid;
00041 };
00042
00043 };
00044
00045 } COMMON_NAMESPACE_END;
00046
00047 #endif
00048
00049
00050
00051