KDEsu
process.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef __Process_h_Included__
00014 #define __Process_h_Included__
00015
00016 #include <sys/types.h>
00017
00018 #include <QtCore/QByteRef>
00019 #include <QtCore/QString>
00020 #include <QtCore/QStringList>
00021 #include <QtCore/QList>
00022
00023 #include <kdesu/kdesu_export.h>
00024
00025 #include <kpty.h>
00026
00027 namespace KDESu {
00028
00037 class KDESU_EXPORT PtyProcess
00038 {
00039 public:
00040 PtyProcess();
00041 virtual ~PtyProcess();
00042
00051 int exec(const QByteArray &command, const QList<QByteArray> &args);
00052
00061 QByteArray readLine(bool block=true);
00062
00069 QByteArray readAll(bool block=true);
00070
00076 void writeLine(const QByteArray &line, bool addNewline=true);
00077
00083 void unreadLine(const QByteArray &line, bool addNewline=true);
00084
00089 void setExitString(const QByteArray &exit);
00090
00094 int waitForChild();
00095
00101 int WaitSlave();
00102
00106 int enableLocalEcho(bool enable=true);
00107
00111 void setTerminal(bool terminal);
00112
00117 void setErase(bool erase);
00118
00122 void setEnvironment( const QList<QByteArray> &env );
00123
00127 int fd() const;
00128
00132 int pid() const;
00133
00134 public :
00135
00136
00137
00138
00139
00140
00141
00151 static int waitMS(int fd,int ms);
00152
00153
00159 static bool checkPid(pid_t pid);
00160
00161
00163 enum checkPidStatus { Error=-1,
00164 NotExited=-2,
00165 Killed=-3
00166 } ;
00167
00175 static int checkPidExited(pid_t pid);
00176
00177
00178 protected:
00179 QList<QByteArray> environment() const;
00180
00181 bool m_bErase,
00182 m_bTerminal;
00185 int m_Pid;
00186 QByteArray m_Command,
00187 m_Exit;
00190 private:
00191 int init();
00192 int setupTTY();
00193
00194 protected:
00196 virtual void virtual_hook( int id, void* data );
00197 private:
00198 class PtyProcessPrivate;
00199 PtyProcessPrivate* const d;
00200 };
00201
00202 }
00203
00204 #endif