AuroraRuntime/Source/Processes/Process.Unix.hpp
J Reece Wilson 6de5cbfb95 [+] Linux: Added bSingleshot API to timerfd backend
[*] NT: Added TTY handle static getter optimization alongside a secret setter API
[*] Made ILoopSource virtual
[+] Linux: Added console TTY stubs
[*] Renamed ConsoleTTY.Linux.cpp -> ConsoleTTY.Unix.cpp
[-] Redundant commented out shm_unlink (zero ref condition should unlink, i believe.)
[+] Added IProcess async pipe transaction getter stubs
[+] Added additional userland env lookup variables: XDG_SESSION_DESKTOP, DESKTOP_SESSION
[+] Unix: AuTime::ns2ts
2022-05-04 16:43:23 +01:00

61 lines
1.4 KiB
C++

/***
Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: Process.Unix.hpp
File: Process.Linux.hpp
Date: 2021-6-12
Author: Reece
***/
namespace Aurora::Processes
{
void DeinitUnix();
void InitUnix();
class ProcessImpl : public IProcess
{
public:
ProcessImpl(const StartupParmaters &params);
~ProcessImpl();
void ShutdownPipes();
bool TryKill() override;
bool Terminate() override;
AuSPtr<Aurora::Threading::IWaitable> AsWaitable() override;
AuSInt GetExitCode() override;
AuUInt GetProcessId() override;
bool Read(EStandardHandle stream, const AuMemoryViewStreamWrite &destination, bool nonblock) override;
bool Write(const AuMemoryViewStreamRead &source) override;
AuSPtr<IO::FS::IAsyncTransaction> NewAsyncTransaction() override;
AuSPtr<IO::FS::IAsyncTransaction> NewErrorStreamAsyncTransaction() override;
bool Start() override;
bool Init();
void ByeLol(AuSInt code);
private:
int pipeStdOut_[2]{};
int pipeStdErr_[2]{};
int pipeStdIn_ [2]{};
AuThreadPrimitives::EventShared_t finished_;
StartupParmaters startup_;
ESpawnType type_;
AuList<const char *> cargs_;
AuString debug_;
pid_t pidt_;
bool alive_ {};
AuSInt exitCode_;
};
}