libzypp 17.37.17
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
30
31 class Process : public AsyncDataSource
32 {
34 public:
38 using Environment = std::map<std::string,std::string>;
39 using Ptr = ProcessRef;
40 using WeakPtr = ProcessWeakRef;
41
46
48 StdOut = 0,
50 };
51
52 static Ptr create ();
53 ~Process() override;
54
55 bool start ( const char *const *argv );
56 void stop ( int signal = SIGTERM );
57 bool isRunning ();
58 void close () override;
59
65 void waitForExit ();
66
71 void closeWriteChannel () override;
72
73 const std::string &executedCommand () const;
74 const std::string &execError() const;
75
76 zypp::Pathname chroot() const;
77 void setChroot( const zypp::Pathname &chroot );
78
79 bool useDefaultLocale() const;
80 void setUseDefaultLocale( bool defaultLocale );
81
84
85 pid_t pid ();
86 int exitStatus () const;
87
88 bool dieWithParent() const;
89 void setDieWithParent(bool enabled );
90
91 bool switchPgid() const;
92 void setSwitchPgid(bool enabled);
93
96
97 const std::vector<int> &fdsToMap () const;
98 void addFd ( int fd );
99
100 int stdinFd ();
101 int stdoutFd ();
102 int stderrFd ();
103
104 SignalProxy<void ()> sigStarted ();
105 SignalProxy<void ()> sigFailedToStart ();
106 SignalProxy<void ( int )> sigFinished ();
107
108 OutputChannelMode outputChannelMode() const;
109 void setOutputChannelMode(const OutputChannelMode &outputChannelMode);
110
111 protected:
112 Process();
113 };
114}
115
116#endif // ZYPPNG_IO_PROCESS_H_DEFINED
bool switchPgid() const
Definition process.cpp:239
OutputChannelMode outputChannelMode() const
Definition process.cpp:299
std::map< std::string, std::string > Environment
For passing additional environment variables to set.
Definition process.h:38
zypp::Pathname chroot() const
Definition process.cpp:189
~Process() override
Definition process.cpp:54
bool dieWithParent() const
Definition process.cpp:229
void close() override
Definition process.cpp:153
int exitStatus() const
Definition process.cpp:224
void setEnvironment(const Environment &environment)
Definition process.cpp:214
void stop(int signal=SIGTERM)
Definition process.cpp:139
void closeWriteChannel() override
Definition process.cpp:172
const std::string & executedCommand() const
Definition process.cpp:179
void addFd(int fd)
Definition process.cpp:264
static Ptr create()
Definition process.cpp:49
bool start(const char *const *argv)
Definition process.cpp:63
bool useDefaultLocale() const
Definition process.cpp:199
void waitForExit()
Definition process.cpp:161
void setWorkingDirectory(const zypp::Pathname &workingDirectory)
Definition process.cpp:254
SignalProxy< void()> sigStarted()
Definition process.cpp:284
ProcessRef Ptr
Definition process.h:39
const std::vector< int > & fdsToMap() const
Definition process.cpp:259
ProcessWeakRef WeakPtr
Definition process.h:40
void setUseDefaultLocale(bool defaultLocale)
Definition process.cpp:204
void setSwitchPgid(bool enabled)
Definition process.cpp:244
void setChroot(const zypp::Pathname &chroot)
Definition process.cpp:194
void setOutputChannelMode(const OutputChannelMode &outputChannelMode)
Definition process.cpp:300
zypp::Pathname workingDirectory() const
Definition process.cpp:249
void setDieWithParent(bool enabled)
Definition process.cpp:234
SignalProxy< void()> sigFailedToStart()
Definition process.cpp:289
SignalProxy< void(int)> sigFinished()
Definition process.cpp:294
Environment environment() const
Definition process.cpp:209
const std::string & execError() const
Definition process.cpp:184
#define ZYPP_DECLARE_PRIVATE(Class)
Definition zyppglobal.h:87
#define ZYPP_FWD_DECL_TYPE_WITH_REFS(T)
Definition zyppglobal.h:126