/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2019, Google Inc. * * Process object */ #pragma once #include #include #include #include #include namespace libcamera { class EventNotifier; class Process final { public: enum ExitStatus { NotExited, NormalExit, SignalExit, }; Process(); ~Process(); int start(const std::string &path, Span args = {}, Span fds = {}); ExitStatus exitStatus() const { return exitStatus_; } int exitCode() const { return exitCode_; } void kill(); Signal finished; private: LIBCAMERA_DISABLE_COPY_AND_MOVE(Process) void onPidfdNotify(); pid_t pid_; enum ExitStatus exitStatus_; int exitCode_; UniqueFD pidfd_; std::unique_ptr pidfdNotify_; }; } /* namespace libcamera */