83 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\b\proc;
 | |
| 
 | |
| /**
 | |
|  * Interface ICmd: une abstraction d'une ou plusieurs commandes à lancer
 | |
|  */
 | |
| interface ICmd {
 | |
|   /**
 | |
|    * vérifier si cette commande a besoin que son entrée standard soit connectée
 | |
|    * à un flux.
 | |
|    */
 | |
|   function isNeedsStdin(): bool;
 | |
| 
 | |
|   /**
 | |
|    * vérifier si cette commande a besoin que sa sortie standard soit connectée
 | |
|    * à un terminal
 | |
|    */
 | |
|   function isNeedsTty(): bool;
 | |
| 
 | |
|   /**
 | |
|    * Ajouter le préfixe spécifié à la dernière commande de la liste
 | |
|    *
 | |
|    * si $prefix est un array, quoter puis assembler les éléments du tableau.
 | |
|    * sinon ce doit être une chaine de caractère et elle est prise telle quelle
 | |
|    */
 | |
|   function addPrefix($prefix): void;
 | |
| 
 | |
|   /**
 | |
|    * Ajouter des redirections à la dernière commande de la liste
 | |
|    *
 | |
|    * $redir spécifie le type de redirection demandée:
 | |
|    * - "default" | null: $output reçoit STDOUT et STDERR n'est pas redirigé
 | |
|    * - "outonly" | "noerr": $output ne reçoit que STDOUT et STDERR est perdu
 | |
|    * - "erronly" | "noout": $output ne reçoit que STDERR et STDOUT est perdu
 | |
|    * - "both" | "err2out": $output reçoit STDOUT et STDERR
 | |
|    * - sinon c'est une redirection spécifique, et la valeur est rajoutée telle
 | |
|    * quelle à la ligne de commande ($output est ignoré)
 | |
|    *
 | |
|    * $output est le nom d'un fichier qui reçoit les redirections, ou null pour
 | |
|    * la valeur par défaut. spécifier $append==true pour ajouter au fichier
 | |
|    * $output au lieu de l'écraser
 | |
|    */
 | |
|   function addRedir(?string $redir, $output=null, bool $append=false, $input=null): void;
 | |
| 
 | |
|   /** Obtenir le texte de la commande comme elle serait saisie dans un shell */
 | |
|   function getCmd(?string $sep=null): string;
 | |
| 
 | |
|   /**
 | |
|    * Lancer la commande avec passthru() et retourner le code de retour dans la
 | |
|    * variable $retcode
 | |
|    *
 | |
|    * voici la différence entre passthru(), system() et exec()
 | |
|    * +----------------+-----------------+----------------+----------------+
 | |
|    * |    Command     | Displays Output | Can Get Output | Gets Exit Code |
 | |
|    * +----------------+-----------------+----------------+----------------+
 | |
|    * | passthru()     | Yes (raw)       | No             | Yes            |
 | |
|    * | system()       | Yes (as text)   | Last line only | Yes            |
 | |
|    * | exec()         | No              | Yes (array)    | Yes            |
 | |
|    * +----------------+-----------------+----------------+----------------+
 | |
|    *
 | |
|    * @return bool true si la commande s'est lancée sans erreur, false sinon
 | |
|    */
 | |
|   function passthru(int &$retcode=null): bool;
 | |
| 
 | |
|   /**
 | |
|    * Comme {@link passthru()} mais lancer la commande spécifiée avec system().
 | |
|    * Cf la doc de {@link passthru()} pour les autres détails
 | |
|    */
 | |
|   function system(string &$output=null, int &$retcode=null): bool;
 | |
| 
 | |
|   /**
 | |
|    * Comme {@link passthru()} mais lancer la commande spécifiée avec exec().
 | |
|    * Cf la doc de {@link passthru()} pour les autres détails
 | |
|    */
 | |
|   function exec(array &$output=null, int &$retcode=null): bool;
 | |
| 
 | |
|   /**
 | |
|    * Lancer la commande dans un processus fils via un shell et attendre la fin
 | |
|    * de son exécution
 | |
|    */
 | |
|   function fork_exec(int &$retcode=null): bool;
 | |
| }
 |