source: trunk/include/qprocess.h@ 35

Last change on this file since 35 was 35, checked in by dmik, 20 years ago

Fixed: forgot to set the svn:keywords property value to 'Id'.

  • Property svn:keywords set to Id
File size: 5.1 KB
Line 
1/****************************************************************************
2** $Id: qprocess.h 35 2005-12-11 15:03:18Z dmik $
3**
4** Implementation of QProcess class
5**
6** Created : 20000905
7**
8** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
9**
10** This file is part of the kernel module of the Qt GUI Toolkit.
11**
12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file.
15**
16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file.
20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software.
24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32**
33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you.
35**
36**********************************************************************/
37
38#ifndef QPROCESS_H
39#define QPROCESS_H
40
41#ifndef QT_H
42#include "qobject.h"
43#include "qstringlist.h"
44#include "qdir.h"
45#endif // QT_H
46
47#ifndef QT_NO_PROCESS
48
49class QProcessPrivate;
50class QMembuf;
51
52
53class Q_EXPORT QProcess : public QObject
54{
55 Q_OBJECT
56public:
57 QProcess( QObject *parent=0, const char *name=0 );
58 QProcess( const QString& arg0, QObject *parent=0, const char *name=0 );
59 QProcess( const QStringList& args, QObject *parent=0, const char *name=0 );
60 ~QProcess();
61
62 // set and get the arguments and working directory
63 QStringList arguments() const;
64 void clearArguments();
65 virtual void setArguments( const QStringList& args );
66 virtual void addArgument( const QString& arg );
67#ifndef QT_NO_DIR
68 QDir workingDirectory() const;
69 virtual void setWorkingDirectory( const QDir& dir );
70#endif
71
72 // set and get the comms wanted
73 enum Communication { Stdin=0x01, Stdout=0x02, Stderr=0x04, DupStderr=0x08 };
74 void setCommunication( int c );
75 int communication() const;
76
77 // start the execution
78 virtual bool start( QStringList *env=0 );
79 virtual bool launch( const QString& buf, QStringList *env=0 );
80 virtual bool launch( const QByteArray& buf, QStringList *env=0 );
81
82 // inquire the status
83 bool isRunning() const;
84 bool normalExit() const;
85 int exitStatus() const;
86
87 // reading
88 virtual QByteArray readStdout();
89 virtual QByteArray readStderr();
90 bool canReadLineStdout() const;
91 bool canReadLineStderr() const;
92 virtual QString readLineStdout();
93 virtual QString readLineStderr();
94
95 // get platform dependent process information
96#if defined(Q_OS_WIN32)
97 typedef void* PID;
98#else
99 typedef Q_LONG PID;
100#endif
101 PID processIdentifier();
102
103 void flushStdin();
104
105signals:
106 void readyReadStdout();
107 void readyReadStderr();
108 void processExited();
109 void wroteToStdin();
110 void launchFinished();
111
112public slots:
113 // end the execution
114 void tryTerminate() const;
115 void kill() const;
116
117 // input
118 virtual void writeToStdin( const QByteArray& buf );
119 virtual void writeToStdin( const QString& buf );
120 virtual void closeStdin();
121
122protected: // ### or private?
123 void connectNotify( const char * signal );
124 void disconnectNotify( const char * signal );
125private:
126 void setIoRedirection( bool value );
127 void setNotifyOnExit( bool value );
128 void setWroteStdinConnected( bool value );
129
130 void init();
131 void reset();
132#if defined(Q_OS_WIN32)
133 uint readStddev( HANDLE dev, char *buf, uint bytes );
134#endif
135 QMembuf* membufStdout();
136 QMembuf* membufStderr();
137
138private slots:
139 void socketRead( int fd );
140 void socketWrite( int fd );
141 void timeout();
142 void closeStdinLaunch();
143
144private:
145 QProcessPrivate *d;
146#ifndef QT_NO_DIR
147 QDir workingDir;
148#endif
149 QStringList _arguments;
150
151 int exitStat; // exit status
152 bool exitNormal; // normal exit?
153 bool ioRedirection; // automatically set be (dis)connectNotify
154 bool notifyOnExit; // automatically set be (dis)connectNotify
155 bool wroteToStdinConnected; // automatically set be (dis)connectNotify
156
157 bool readStdoutCalled;
158 bool readStderrCalled;
159 int comms;
160
161 friend class QProcessPrivate;
162#if defined(Q_OS_UNIX)
163 friend class QProcessManager;
164 friend class QProc;
165#endif
166
167#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator=
168 QProcess( const QProcess & );
169 QProcess &operator=( const QProcess & );
170#endif
171};
172
173#endif // QT_NO_PROCESS
174
175#endif // QPROCESS_H
Note: See TracBrowser for help on using the repository browser.