15 #ifndef NINJA_SUBPROCESS_H_ 16 #define NINJA_SUBPROCESS_H_ 30 # include <sys/param.h> 31 # if defined USE_PPOLL && __FreeBSD_version < 1002000 63 HANDLE SetupPipe(HANDLE ioport);
67 OVERLAPPED overlapped_;
68 char overlapped_buf_[4 << 10];
86 Subprocess*
Add(
const std::string& command,
bool use_console =
false);
95 static BOOL WINAPI NotifyInterrupted(DWORD dwCtrlType);
96 static HANDLE ioport_;
113 #endif // NINJA_SUBPROCESS_H_ Subprocess * Add(const std::string &command, bool use_console=false)
SubprocessSet runs a ppoll/pselect() loop around a set of Subprocesses.
std::queue< Subprocess * > finished_
static void SetInterruptedFlag(int signum)
Subprocess * NextFinished()
ExitStatus Finish()
Returns ExitSuccess on successful process exit, ExitInterrupted if the process was interrupted...
bool Start(struct SubprocessSet *set, const std::string &command)
struct sigaction old_int_act_
Subprocess wraps a single async subprocess.
static bool IsInterrupted()
static int interrupted_
Store the signal number that causes the interruption.
struct sigaction old_hup_act_
Subprocess(bool use_console)
static void HandlePendingInterruption()
const std::string & GetOutput() const
std::vector< Subprocess * > running_
struct sigaction old_term_act_