26 bool separatePG =
false;
27 int killSignal = SIGKILL;
30 explicit Pid(pid_t pid): pid(pid) {}
32 Pid & operator=(Pid && other);
33 ~Pid()
noexcept(
false);
34 explicit operator bool()
const {
return pid != -1; }
38 void setSeparatePG(
bool separatePG);
39 void setKillSignal(
int signal);
41 pid_t get()
const {
return pid; }
48void killUser(uid_t uid);
57 std::string errorPrefix =
"";
58 bool dieWithParent =
true;
59 bool runExitHandlers =
false;
74std::string runProgram(
Path program,
bool searchPath =
false,
75 const Strings & args = Strings(),
bool isInteractive =
false);
85 bool searchPath =
true;
87 std::optional<uid_t> uid = {};
88 std::optional<uid_t> gid = {};
89 std::optional<Path> chdir = {};
90 std::optional<std::map<std::string, std::string>> environment = {};
91 bool captureStdout =
false;
92 bool isInteractive =
false;
93 std::vector<Redirection> redirections;
99struct [[nodiscard(
"you must call RunningProgram::wait()")]] RunningProgram
101 friend RunningProgram runProgram2(
const RunOptions & options);
106 std::unique_ptr<Source> stdoutSource;
112 RunningProgram() =
default;
113 RunningProgram(RunningProgram &&) =
default;
114 RunningProgram & operator=(RunningProgram &&) =
default;
117 explicit operator bool()
const {
return bool(pid); }
119 std::tuple<pid_t, std::unique_ptr<Source>,
int> release();
126 std::optional<int> getStdoutFD()
const
128 return stdout_ ? std::optional(stdout_.get()) : std::nullopt;
131 Source * getStdout()
const {
return stdoutSource.get(); };
134std::pair<int, std::string> runProgram(
RunOptions && options);
138class ExecError :
public Error
143 template<
typename...
Args>
144 ExecError(
int status,
const Args & ... args)
145 : Error(args...), status(status)
153std::string statusToString(
int status);
155bool statusOk(
int status);
Definition file-descriptor.hh:51
Definition processes.hh:24
This file defines two main structs/classes used in nix error handling.
Definition processes.hh:56
int cloneFlags
Definition processes.hh:63
Definition processes.hh:80
Definition processes.hh:78
Definition processes.hh:100
Definition serialise.hh:18
Definition serialise.hh:66
std::string Path
Definition types.hh:28