processOpNode.h
Ir a la documentación de este archivo.
1 //processOpNode.h
2 //-------------------------------------------------------------------------------------------
3 /*
4  * Fco. Javier Bohórquez Ogalla
5  * 75766599-E
6  * Puerto Real (Cádiz)
7  * powersgame@gmail.com
8  */
9 //-------------------------------------------------------------------------------------------
10 
11 //-------------------------------------------------------------------------------------------
12 /*
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation; either version 2 of the License, or
16  * (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software
25  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
26  * MA 02110-1301, USA.
27  */
28 //-------------------------------------------------------------------------------------------
29 
30 //-------------------------------------------------------------------------------------------
39 //-------------------------------------------------------------------------------------------
40 
41 //-------------------------------------------------------------------------------------------
42 #ifndef _RUN_OPERATORS_PROCESSOPNODE_
43 #define _RUN_OPERATORS_PROCESSOPNODE_
44 
45 #include "../tree/typeNode.h"
46 //-------------------------------------------------------------------------------------------
47 
48 //-------------------------------------------------------------------------------------------
57 class execNode : public stringNode {
58  public:
63  execNode (runNode* node);
69  void run ();
70  private:
71  runNode *node_;
72 };
73 //----------------------------------------------------------------------
74 
75 //----------------------------------------------------------------------
84 class evalNode : public nexpNode {
85  public:
90  evalNode (runNode* node);
97  void run ();
98  private:
99  runNode *node_;
100 };
101 //-------------------------------------------------------------------------------------------
102 
103 //-------------------------------------------------------------------------------------------
115 class forkNode: public arithNode {
116  public:
120  forkNode ();
128  void run ();
129 };
130 //----------------------------------------------------------------------
131 
132 //----------------------------------------------------------------------
140 class waitNode: public arithNode {
141  public:
147  waitNode (runNode * pID = NULL);
152  void run ();
153  private:
154  runNode * pID_;
155 };
156 //----------------------------------------------------------------------
157 
158 //----------------------------------------------------------------------
166 class getpidNode: public arithNode {
167  public:
171  getpidNode ();
176  void run ();
177 };
178 //----------------------------------------------------------------------
179 
180 //----------------------------------------------------------------------
187 class getppidNode: public arithNode {
188  public:
192  getppidNode ();
197  void run ();
198 };
199 //----------------------------------------------------------------------
200 
201 //----------------------------------------------------------------------
208 class processNode : public logicNode {
209  public:
215  processNode (runNode* func, runNode* params = NULL);
221  void run();
222  private:
223  static void *processRun (void *ptr);
224  runNode *func_, *params_;
225 };
226 //----------------------------------------------------------------------
227 
228 //----------------------------------------------------------------------
236 class exitProcessNode : public logicNode {
237  public:
241  exitProcessNode ();
247  void run();
248 };
249 //----------------------------------------------------------------------
250 
251 //----------------------------------------------------------------------
260 class signalNode : public logicNode {
261  public:
267  signalNode (runNode* pid, runNode* signal);
273  void run();
274  private:
275  runNode* pid_, *signal_;
276 };
277 //----------------------------------------------------------------------
278 
279 //----------------------------------------------------------------------
288 class signalhandlerNode : public logicNode {
289  public:
295  signalhandlerNode (runNode* signal, runNode* function);
301  void run();
306  static void callHandlers (int signum);
307  private:
308  runNode* function_, *signal_;
309  static vector<runNode *> instances;
310 };
311 //----------------------------------------------------------------------
312 #endif
313 //----------------------------------------------------------------------
314 //Fco. Javier Bohórquez Ogalla
void run()
Definition: processOpNode.cpp:155
static void callHandlers(int signum)
Definition: processOpNode.cpp:295
Nodos lógicos.
Definition: expNode.h:279
execNode(runNode *node)
Definition: processOpNode.cpp:45
getppidNode()
Definition: processOpNode.cpp:170
getpidNode()
Definition: processOpNode.cpp:153
Nodo función espera de proceso .
Definition: processOpNode.h:140
Nodos aritméticos.
Definition: expNode.h:351
Nodo función fork.
Definition: processOpNode.h:115
Node operador ejecución de comando.
Definition: processOpNode.h:57
Nodo llamada concurrente.
Definition: processOpNode.h:208
evalNode(runNode *node)
Definition: processOpNode.cpp:75
exitProcessNode()
Definition: processOpNode.cpp:230
Nodo función manejadora de señales.
Definition: processOpNode.h:288
void run()
Definition: processOpNode.cpp:209
void run()
Definition: processOpNode.cpp:232
waitNode(runNode *pID=NULL)
Definition: processOpNode.cpp:119
Node operador evaluación.
Definition: processOpNode.h:84
void run()
Definition: processOpNode.cpp:121
void run()
Definition: processOpNode.cpp:108
Nodo ejecutable.
Definition: runTree.h:123
processNode(runNode *func, runNode *params=NULL)
Definition: processOpNode.cpp:187
Nodo función obtener identificador de proceso padre.
Definition: processOpNode.h:187
void run()
Definition: processOpNode.cpp:47
void run()
Definition: processOpNode.cpp:248
Nodo función obtener identificador de proceso.
Definition: processOpNode.h:166
signalhandlerNode(runNode *signal, runNode *function)
Definition: processOpNode.cpp:272
void run()
Definition: processOpNode.cpp:77
Node función envío de señal a proceso .
Definition: processOpNode.h:260
Nodos cadenas de texto.
Definition: expNode.h:418
void run()
Definition: processOpNode.cpp:274
forkNode()
Definition: processOpNode.cpp:106
Nodo función finalización de proceso.
Definition: processOpNode.h:236
void run()
Definition: processOpNode.cpp:172
signalNode(runNode *pid, runNode *signal)
Definition: processOpNode.cpp:246
Nodo expresión de tipo no definido.
Definition: expNode.h:164