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;
95 virtual void on_sig_child() = 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;
169 #endif // CORE_POSIX_CHILD_PROCESS_H_
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...
#define CORE_POSIX_DLL_PUBLIC
Status
The Status enum wrap's the posix exit status.
Flags
Flags enumerates different behavior when waiting for a child process to change state.
The Process class models a process and possible operations on it.
StandardStream
The StandardStream enum wraps the POSIX standard streams.
CORE_POSIX_DLL_PUBLIC std::istream & cin() noexcept(true)
Access this process's stdin.
The Result struct encapsulates the result of waiting for a process state change.
The DeathObserver class observes child process' states and emits a signal when a monitored child has ...
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...
#define CORE_POSIX_DLL_LOCAL
CORE_POSIX_DLL_PUBLIC std::ostream & cerr() noexcept(true)
Access this process's stderr.
The Process class models a child process of this process.
CORE_POSIX_DLL_PUBLIC std::ostream & cout() noexcept(true)
Access this process's stdout.