libzypp 17.34.0
process.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\----------------------------------------------------------------------/
9*
10* This file contains private API, this might break at any time between releases.
11* You have been warned!
12*
13*/
14
15#ifndef ZYPPNG_IO_PROCESS_H_DEFINED
16#define ZYPPNG_IO_PROCESS_H_DEFINED
17
18#include <zypp-core/zyppng/io/AsyncDataSource>
19#include <zypp-core/zyppng/base/Signals>
20#include <memory>
21#include <map>
22#include <signal.h>
23
24namespace zyppng {
25
26 class ProcessPrivate;
27 class IODevice;
28
29 class Process : public AsyncDataSource
30 {
32 public:
36 using Environment = std::map<std::string,std::string>;
37 using Ptr = std::shared_ptr<Process>;
38 using WeakPtr = std::weak_ptr<Process>;
39
44
46 StdOut = 0,
47 StdErr = 1
48 };
49
50 static Ptr create ();
51 ~Process() override;
52
53 bool start ( const char *const *argv );
54 void stop ( int signal = SIGTERM );
55 bool isRunning ();
56 void close () override;
57
63 void waitForExit ();
64
69 void closeWriteChannel () override;
70
71 const std::string &executedCommand () const;
72 const std::string &execError() const;
73
74 zypp::Pathname chroot() const;
75 void setChroot( const zypp::Pathname &chroot );
76
77 bool useDefaultLocale() const;
79
82
83 pid_t pid ();
84 int exitStatus () const;
85
86 bool dieWithParent() const;
87 void setDieWithParent(bool enabled );
88
89 bool switchPgid() const;
90 void setSwitchPgid(bool enabled);
91
94
95 const std::vector<int> &fdsToMap () const;
96 void addFd ( int fd );
97
98 int stdinFd ();
99 int stdoutFd ();
100 int stderrFd ();
101
104 SignalProxy<void ( int )> sigFinished ();
105
106 OutputChannelMode outputChannelMode() const;
107 void setOutputChannelMode(const OutputChannelMode &outputChannelMode);
108
109 protected:
110 Process();
111 };
112}
113
114#endif // ZYPPNG_IO_PROCESS_H_DEFINED
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
Definition AutoDispose.h:95
bool switchPgid() const
Definition process.cpp:237
OutputChannelMode outputChannelMode() const
Definition process.cpp:297
std::map< std::string, std::string > Environment
For passing additional environment variables to set.
Definition process.h:36
zypp::Pathname chroot() const
Definition process.cpp:187
std::shared_ptr< Process > Ptr
Definition process.h:37
~Process() override
Definition process.cpp:52
bool dieWithParent() const
Definition process.cpp:227
void close() override
Definition process.cpp:151
int exitStatus() const
Definition process.cpp:222
void setEnvironment(const Environment &environment)
Definition process.cpp:212
void stop(int signal=SIGTERM)
Definition process.cpp:137
void closeWriteChannel() override
Definition process.cpp:170
const std::string & executedCommand() const
Definition process.cpp:177
void addFd(int fd)
Definition process.cpp:262
static Ptr create()
Definition process.cpp:47
bool start(const char *const *argv)
Definition process.cpp:61
bool useDefaultLocale() const
Definition process.cpp:197
void waitForExit()
Definition process.cpp:159
std::weak_ptr< Process > WeakPtr
Definition process.h:38
void setWorkingDirectory(const zypp::Pathname &workingDirectory)
Definition process.cpp:252
SignalProxy< void()> sigStarted()
Definition process.cpp:282
const std::vector< int > & fdsToMap() const
Definition process.cpp:257
void setUseDefaultLocale(bool defaultLocale)
Definition process.cpp:202
void setSwitchPgid(bool enabled)
Definition process.cpp:242
void setChroot(const zypp::Pathname &chroot)
Definition process.cpp:192
void setOutputChannelMode(const OutputChannelMode &outputChannelMode)
Definition process.cpp:298
zypp::Pathname workingDirectory() const
Definition process.cpp:247
void setDieWithParent(bool enabled)
Definition process.cpp:232
SignalProxy< void()> sigFailedToStart()
Definition process.cpp:287
ZYPP_DECLARE_PRIVATE(Process)
SignalProxy< void(int)> sigFinished()
Definition process.cpp:292
Environment environment() const
Definition process.cpp:207
const std::string & execError() const
Definition process.cpp:182