libzypp  17.35.16
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 
24 namespace 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 
45  };
46 
48  StdOut = 0,
49  StdErr = 1
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 
82  Environment environment() const;
83  void setEnvironment( const Environment &environment );
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 
107 
110 
111  protected:
112  Process();
113  };
114 }
115 
116 #endif // ZYPPNG_IO_PROCESS_H_DEFINED
Environment environment() const
Definition: process.cpp:209
int exitStatus() const
Definition: process.cpp:224
zypp::Pathname chroot() const
Definition: process.cpp:189
void setEnvironment(const Environment &environment)
Definition: process.cpp:214
const std::vector< int > & fdsToMap() const
Definition: process.cpp:259
std::weak_ptr< Base > WeakPtr
Definition: base.h:66
SignalProxy< void()> sigStarted()
Definition: process.cpp:284
void setChroot(const zypp::Pathname &chroot)
Definition: process.cpp:194
void closeWriteChannel() override
Definition: process.cpp:172
SignalProxy< void(int)> sigFinished()
Definition: process.cpp:294
OutputChannelMode outputChannelMode() const
Definition: process.cpp:299
void close() override
Definition: process.cpp:153
bool dieWithParent() const
Definition: process.cpp:229
void setWorkingDirectory(const zypp::Pathname &workingDirectory)
Definition: process.cpp:254
bool start(const char *const *argv)
Definition: process.cpp:63
void setSwitchPgid(bool enabled)
Definition: process.cpp:244
SignalProxy< void()> sigFailedToStart()
Definition: process.cpp:289
const std::string & execError() const
Definition: process.cpp:184
std::map< std::string, std::string > Environment
For passing additional environment variables to set.
Definition: process.h:38
ZYPP_FWD_DECL_TYPE_WITH_REFS(Context)
static Ptr create()
Definition: process.cpp:49
zypp::Pathname workingDirectory() const
Definition: process.cpp:249
bool isRunning()
Definition: process.cpp:147
ProcessRef Ptr
Definition: process.h:39
void setUseDefaultLocale(bool defaultLocale)
Definition: process.cpp:204
#define ZYPP_DECLARE_PRIVATE(Class)
Definition: zyppglobal.h:87
void stop(int signal=SIGTERM)
Definition: process.cpp:139
~Process() override
Definition: process.cpp:54
bool useDefaultLocale() const
Definition: process.cpp:199
void waitForExit()
Definition: process.cpp:161
const std::string & executedCommand() const
Definition: process.cpp:179
bool switchPgid() const
Definition: process.cpp:239
void setOutputChannelMode(const OutputChannelMode &outputChannelMode)
Definition: process.cpp:300
void addFd(int fd)
Definition: process.cpp:264
void setDieWithParent(bool enabled)
Definition: process.cpp:234
std::shared_ptr< Base > Ptr
Definition: base.h:65