3#include <initializer_list>
204 std::thread cin_thread;
205 std::thread cout_thread;
206 std::thread cerr_thread;
208 PROCESS_INFORMATION process_info;
Definition ProcessBuilder.hpp:219
Popen run()
Definition ProcessBuilder.hpp:242
Popen run_command(const CommandLine &command)
EnvMap env
Definition ProcessBuilder.hpp:234
PipeOption cout_option
Definition ProcessBuilder.hpp:229
std::string windows_args(const CommandLine &command)
std::string windows_command()
PipeOption cerr_option
Definition ProcessBuilder.hpp:230
PipeHandle cout_pipe
Definition ProcessBuilder.hpp:224
std::string cwd
Definition ProcessBuilder.hpp:235
std::string windows_args()
CommandLine command
Definition ProcessBuilder.hpp:236
PipeHandle cin_pipe
Definition ProcessBuilder.hpp:223
PipeOption cin_option
Definition ProcessBuilder.hpp:228
bool new_process_group
Definition ProcessBuilder.hpp:232
std::vector< PipeHandle > child_close_pipes
Definition ProcessBuilder.hpp:221
PipeHandle cerr_pipe
Definition ProcessBuilder.hpp:225
Definition ProcessBuilder.hpp:336
double seconds() const
Definition ProcessBuilder.hpp:341
void start()
Definition ProcessBuilder.hpp:340
StopWatch()
Definition ProcessBuilder.hpp:338
Definition basic_types.hpp:22
double monotonic_seconds()
bool pipe_close(PipeHandle handle)
int PipeHandle
Definition basic_types.hpp:77
PipeOption
Definition basic_types.hpp:103
@ cout
Redirects to stdout.
@ inherit
Inherits current process handle.
@ cerr
redirects to stderr
const PipeHandle kBadPipeValue
Definition basic_types.hpp:84
::pid_t pid_t
Definition basic_types.hpp:78
CompletedProcess run(Popen &popen, bool check=false)
std::vector< std::string > CommandLine
Definition basic_types.hpp:99
double sleep_seconds(double seconds)
void pipe_ignore_and_close(PipeHandle handle)
std::map< std::string, std::string > EnvMap
Definition basic_types.hpp:100
constexpr int kBadReturnCode
Definition basic_types.hpp:97
std::variant< PipeOption, std::string, PipeHandle, std::istream *, std::ostream *, FILE * > PipeVar
Definition PipeVar.hpp:22
Definition basic_types.hpp:164
Definition ProcessBuilder.hpp:91
int returncode
Definition ProcessBuilder.hpp:138
CommandLine args
Definition ProcessBuilder.hpp:140
void close_cin()
Definition ProcessBuilder.hpp:191
PipeHandle cin
Definition ProcessBuilder.hpp:115
Popen & operator=(const Popen &)=delete
void ignore_output()
Definition ProcessBuilder.hpp:147
Popen(CommandLine command, RunOptions &&options)
int wait(double timeout=-1)
PipeHandle cout
Definition ProcessBuilder.hpp:124
Popen()
Definition ProcessBuilder.hpp:94
bool send_signal(int signal)
void ignore_cout()
Definition ProcessBuilder.hpp:143
Popen(CommandLine command, const RunOptions &options)
PipeHandle cerr
Definition ProcessBuilder.hpp:133
Popen & operator=(Popen &&)
std::string cwd
Definition ProcessBuilder.hpp:139
friend ProcessBuilder
Definition ProcessBuilder.hpp:197
pid_t pid
Definition ProcessBuilder.hpp:136
void ignore_cerr()
Definition ProcessBuilder.hpp:145
Popen(const Popen &)=delete
Definition ProcessBuilder.hpp:282
RunBuilder()
Definition ProcessBuilder.hpp:286
RunBuilder & cin(const PipeVar &cin)
Definition ProcessBuilder.hpp:294
Popen popen()
Definition ProcessBuilder.hpp:323
RunBuilder & timeout(double timeout)
Definition ProcessBuilder.hpp:304
RunBuilder(std::initializer_list< std::string > command)
Definition ProcessBuilder.hpp:290
RunBuilder & new_process_group(bool new_group)
Definition ProcessBuilder.hpp:311
CommandLine command
Definition ProcessBuilder.hpp:284
RunOptions options
Definition ProcessBuilder.hpp:283
RunBuilder & cwd(std::string cwd)
Definition ProcessBuilder.hpp:300
RunBuilder & env(const EnvMap &env)
Definition ProcessBuilder.hpp:302
RunBuilder & cout(const PipeVar &cout)
Definition ProcessBuilder.hpp:296
CompletedProcess run()
Definition ProcessBuilder.hpp:318
RunBuilder(CommandLine cmd)
Definition ProcessBuilder.hpp:288
RunBuilder & cerr(const PipeVar &cerr)
Definition ProcessBuilder.hpp:298
RunBuilder & check(bool ch)
Definition ProcessBuilder.hpp:292
Definition ProcessBuilder.hpp:25
bool check
Definition ProcessBuilder.hpp:80
std::string cwd
Definition ProcessBuilder.hpp:69
PipeVar cout
Definition ProcessBuilder.hpp:43
bool new_process_group
Definition ProcessBuilder.hpp:66
double timeout
Definition ProcessBuilder.hpp:76
PipeVar cerr
Definition ProcessBuilder.hpp:63
EnvMap env
Definition ProcessBuilder.hpp:82
PipeVar cin
Definition ProcessBuilder.hpp:34