diff options
author | crupest <crupest@outlook.com> | 2024-06-24 00:06:25 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2024-07-21 13:45:23 +0800 |
commit | 5f0d7dc36a7a0091bfc152be9f06730cd08eb4dd (patch) | |
tree | 72ded26e72272dc2f7edf29146b907e52784ad6a /include/cru/common/platform/unix/PosixSpawnSubProcess.h | |
parent | e532469ca8844bf4daff8d462f80abdd776c018f (diff) | |
download | cru-5f0d7dc36a7a0091bfc152be9f06730cd08eb4dd.tar.gz cru-5f0d7dc36a7a0091bfc152be9f06730cd08eb4dd.tar.bz2 cru-5f0d7dc36a7a0091bfc152be9f06730cd08eb4dd.zip |
feat: reimplement subprocess without template.
NEED TEST: BufferStream, AutoReadStream, SubProcess.
Diffstat (limited to 'include/cru/common/platform/unix/PosixSpawnSubProcess.h')
-rw-r--r-- | include/cru/common/platform/unix/PosixSpawnSubProcess.h | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/include/cru/common/platform/unix/PosixSpawnSubProcess.h b/include/cru/common/platform/unix/PosixSpawnSubProcess.h index d4df284b..ee4e912a 100644 --- a/include/cru/common/platform/unix/PosixSpawnSubProcess.h +++ b/include/cru/common/platform/unix/PosixSpawnSubProcess.h @@ -16,20 +16,21 @@ #include <spawn.h> namespace cru::platform::unix { -class PosixSpawnSubProcessImpl { +class PosixSpawnSubProcessImpl : public Object, + public virtual IPlatformSubProcessImpl { CRU_DEFINE_CLASS_LOG_TAG(u"PosixSpawnSubProcess") public: explicit PosixSpawnSubProcessImpl(); ~PosixSpawnSubProcessImpl(); - io::Stream* GetStdinStream(); - io::Stream* GetStdoutStream(); - io::Stream* GetStderrStream(); + void PlatformCreateProcess(const SubProcessStartInfo& start_info) override; + SubProcessExitResult PlatformWaitForProcess() override; + void PlatformKillProcess() override; - void PlatformCreateProcess(const SubProcessStartInfo& start_info); - SubProcessExitResult PlatformWaitForProcess(); - void PlatformKillProcess(); + io::Stream* GetStdinStream() override; + io::Stream* GetStdoutStream() override; + io::Stream* GetStderrStream() override; private: pid_t pid_; @@ -46,6 +47,4 @@ class PosixSpawnSubProcessImpl { std::unique_ptr<io::AutoReadStream> stdout_buffer_stream_; std::unique_ptr<io::AutoReadStream> stderr_buffer_stream_; }; - -using PosixSpawnSubProcess = PlatformSubProcess<PosixSpawnSubProcessImpl>; } // namespace cru::platform::unix |