int status;
public:
- exit_status() : status(0) { }
- explicit exit_status(int status_p) : status(status_p) { }
+ exit_status() noexcept : status(0) { }
+ explicit exit_status(int status_p) noexcept : status(status_p) { }
- bool did_exit()
+ bool did_exit() noexcept
{
return WIFEXITED(status);
}
- bool did_exit_clean()
+ bool did_exit_clean() noexcept
{
return status == 0;
}
- bool was_signalled()
+ bool was_signalled() noexcept
{
return WIFSIGNALED(status);
}
- int get_exit_status()
+ int get_exit_status() noexcept
{
return WEXITSTATUS(status);
}
- int get_term_sig()
+ int get_term_sig() noexcept
{
return WTERMSIG(status);
}
+
+ int as_int() noexcept
+ {
+ return status;
+ }
};
inline pid_t waitpid(pid_t p, exit_status *statusp, int flags)
{
return exec_arg_parts;
}
+
+ pid_t get_pid() override
+ {
+ return pid;
+ }
+
+ int get_exit_status() override
+ {
+ return exit_status.as_int();
+ }
};
// Standard process service.
{
return stop_reason;
}
+
+ bool is_waiting_for_console()
+ {
+ return waiting_for_console;
+ }
+
+ bool has_console()
+ {
+ return have_console;
+ }
+
+ virtual pid_t get_pid()
+ {
+ return -1;
+ }
+
+ virtual int get_exit_status()
+ {
+ return 0;
+ }
};
inline auto extract_prop_queue(service_record *sr) -> decltype(sr->prop_queue_node) &