19#ifndef CORE_POSIX_CHILD_PROCESS_H_
20#define CORE_POSIX_CHILD_PROCESS_H_
26#include <core/signal.h>
64 static std::unique_ptr<DeathObserver> create_once_with_signal_trap(
65 std::shared_ptr<SignalTrap> trap);
90 virtual const core::Signal<ChildProcess>&
child_died()
const = 0;
120 std::istream& cerr();
130 std::istream& cout();
139 static Pipe invalid();
142 Pipe(
const Pipe& rhs);
145 Pipe& operator=(
const Pipe& rhs);
148 void close_read_fd();
150 int write_fd()
const;
151 void close_write_fd();
164 std::shared_ptr<Private> d;
The DeathObserver class observes child process' states and emits a signal when a monitored child has ...
virtual bool add(const ChildProcess &child)=0
add adds the specified child to the list of observed child processes.
DeathObserver & operator=(const DeathObserver &)=delete
virtual bool has(const ChildProcess &child) const =0
has checks whether the specified child is observed.
virtual ~DeathObserver()=default
virtual void on_sig_child()=0
Checks and reaps all child processes registered with the observer instance.
bool operator==(const DeathObserver &) const =delete
DeathObserver(const DeathObserver &)=delete
virtual const core::Signal< ChildProcess > & child_died() const =0
child_died is emitted whenever an observed child ceases to exist.
The Process class models a child process of this process.
The Process class models a process and possible operations on it.
Status
The Status enum wrap's the posix exit status.
Flags
Flags enumerates different behavior when waiting for a child process to change state.
CORE_POSIX_DLL_PUBLIC ChildProcess vfork(const std::function< posix::exit::Status()> &main, const StandardStream &flags)
fork vforks a new process and executes the provided main function in the newly forked process.
CORE_POSIX_DLL_PUBLIC ChildProcess fork(const std::function< posix::exit::Status()> &main, const StandardStream &flags)
fork forks a new process and executes the provided main function in the newly forked process.
StandardStream
The StandardStream enum wraps the POSIX standard streams.
The Result struct encapsulates the result of waiting for a process state change.
#define CORE_POSIX_DLL_PUBLIC
#define CORE_POSIX_DLL_LOCAL