libzypp  17.34.1
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 
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 
43  };
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;
78  void setUseDefaultLocale( bool defaultLocale );
79 
80  Environment environment() const;
81  void setEnvironment( const Environment &environment );
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 
105 
108 
109  protected:
110  Process();
111  };
112 }
113 
114 #endif // ZYPPNG_IO_PROCESS_H_DEFINED
Environment environment() const
Definition: process.cpp:207
int exitStatus() const
Definition: process.cpp:222
zypp::Pathname chroot() const
Definition: process.cpp:187
void setEnvironment(const Environment &environment)
Definition: process.cpp:212
const std::vector< int > & fdsToMap() const
Definition: process.cpp:257
std::weak_ptr< Base > WeakPtr
Definition: base.h:66
SignalProxy< void()> sigStarted()
Definition: process.cpp:282
void setChroot(const zypp::Pathname &chroot)
Definition: process.cpp:192
void closeWriteChannel() override
Definition: process.cpp:170
SignalProxy< void(int)> sigFinished()
Definition: process.cpp:292
OutputChannelMode outputChannelMode() const
Definition: process.cpp:297
void close() override
Definition: process.cpp:151
std::shared_ptr< Process > Ptr
Definition: process.h:37
bool dieWithParent() const
Definition: process.cpp:227
void setWorkingDirectory(const zypp::Pathname &workingDirectory)
Definition: process.cpp:252
bool start(const char *const *argv)
Definition: process.cpp:61
void setSwitchPgid(bool enabled)
Definition: process.cpp:242
SignalProxy< void()> sigFailedToStart()
Definition: process.cpp:287
const std::string & execError() const
Definition: process.cpp:182
std::map< std::string, std::string > Environment
For passing additional environment variables to set.
Definition: process.h:36
static Ptr create()
Definition: process.cpp:47
zypp::Pathname workingDirectory() const
Definition: process.cpp:247
bool isRunning()
Definition: process.cpp:145
void setUseDefaultLocale(bool defaultLocale)
Definition: process.cpp:202
void stop(int signal=SIGTERM)
Definition: process.cpp:137
~Process() override
Definition: process.cpp:52
bool useDefaultLocale() const
Definition: process.cpp:197
void waitForExit()
Definition: process.cpp:159
const std::string & executedCommand() const
Definition: process.cpp:177
bool switchPgid() const
Definition: process.cpp:237
void setOutputChannelMode(const OutputChannelMode &outputChannelMode)
Definition: process.cpp:298
void addFd(int fd)
Definition: process.cpp:262
void setDieWithParent(bool enabled)
Definition: process.cpp:232
ZYPP_DECLARE_PRIVATE(Process)
std::shared_ptr< Base > Ptr
Definition: base.h:65