Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Process.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* Process.h (C) 2000-2022 */
9/* */
10/* Gestion des processus. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_PROCESS_H
13#define ARCANE_UTILS_PROCESS_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Array.h"
18#include "arcane/utils/String.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29class ARCANE_UTILS_EXPORT ProcessExecArgs
30{
31 friend class Process;
32 public:
33
34 enum class ExecStatus
35 {
36 // Le processus fils a terminé correctement (mais peut être en erreur)
37 OK,
38 //! Le fork() a échoué
39 CanNotFork,
40 //! L'appel à pipe2() a échoué
41 CanNotCreatePipe,
42 // Le processus fils n'a pas terminé correctement (void waitpid())
43 AbnormalExit
44 };
45 public:
46 //! Commande à exécuter. Doit correspondre à un exécutable.
47 String command() const { return m_command; }
48 void setCommand(const String& v) { m_command = v; }
49
50 //! Liste des arguments
51 StringConstArrayView arguments() const { return m_arguments; }
52 void addArguments(const String& v) { m_arguments.add(v); }
53 void setArguments(const StringArray& v) { m_arguments = v; }
54
55 //! Chaîne de caractère à envoyer sur l'entrée standard (STDIN) du processsus.
56 ByteConstArrayView inputBytes() const { return m_input_bytes; }
57 void setInputBytes(ByteConstArrayView s) { m_input_bytes = s; }
58
59 //! Contient le résultat de la sortie standard (STDOUT) du processus
60 ByteConstArrayView outputBytes() const { return m_output_bytes; }
61 //! Code de retour du processus exécuté.
62 int exitCode() const { return m_exit_code; }
63
64 private:
65
66 String m_command;
67 StringUniqueArray m_arguments;
68 UniqueArray<Byte> m_input_bytes;
69 UniqueArray<Byte> m_output_bytes;
70 int m_exit_code = 0;
71};
72
73/*---------------------------------------------------------------------------*/
74/*---------------------------------------------------------------------------*/
75/*!
76 * \brief Classe permettant d'exécuter un processus externe.
77 */
78class ARCANE_UTILS_EXPORT Process
79{
80 public:
81 //! Exécute un processus dont les infos sont contenues dans \a args.
82 static ProcessExecArgs::ExecStatus execute(ProcessExecArgs& args);
83};
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
87
88} // End namespace Arcane
89
90/*---------------------------------------------------------------------------*/
91/*---------------------------------------------------------------------------*/
92
93#endif
94
String command() const
Commande à exécuter. Doit correspondre à un exécutable.
Definition Process.h:47
int exitCode() const
Code de retour du processus exécuté.
Definition Process.h:62
ByteConstArrayView inputBytes() const
Chaîne de caractère à envoyer sur l'entrée standard (STDIN) du processsus.
Definition Process.h:56
ByteConstArrayView outputBytes() const
Contient le résultat de la sortie standard (STDOUT) du processus.
Definition Process.h:60
StringConstArrayView arguments() const
Liste des arguments.
Definition Process.h:51
Classe permettant d'exécuter un processus externe.
Definition Process.h:79
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-