popen

(PHP 4, PHP 5, PHP 7, PHP 8)

popenApre un puntatore ad un file di processo

Descrizione

popen(string $command, string $mode): resource|false

Apre una pipe ad un processo eseguito forkando il comando dato da command.

Elenco dei parametri

command

Il comando

mode

La modalità. O 'r' per leggere, o 'w' per scrivere.

Su Windows, popen() di default usa la modalità testo, cioè qualsiasi carattere \n scritto o letto dalla pipe verrà tradotto in \r\n. Se ciò non è desiderato, può essere applicata la modalità binaria impostando mode a 'rb' e 'wb', rispettivamente.

Valori restituiti

Restituisce un puntatore a file identico a quello restituito da fopen(), eccetto che per il fatto che è unidirezionale (può solo essere usato per la lettura o la scrittura) e deve essere chiuso con pclose(). Questo puntatore può essere usato con fgets(), fgetss() e fwrite(). Quando la modalità è 'r', il puntatore al file restituito è uguale allo STDOUT del comando, quando la modalità è 'w', il puntatore al file restituito è uguale allo STDIN del comando.

Se si verifica un errore, restituisce false.

Esempi

Example #1 Esempio di popen()

<?php
$handle
= popen("/bin/ls", "r");
?>

Se non è stato possibile trovare il comando da eseguire, viene restituita una risorsa valida. Può sembrare strano, ma ha senso; esso permette di accedere a qualsiasi messaggio di errore restituito dalla shell:

Example #2 Esempio di popen()

<?php
error_reporting
(E_ALL);

/* Aggiunge un reindirizzamento, in modo da poter ottenere stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo
"'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo
$read;
pclose($handle);
?>

Note

Nota:

Se si sta cercando il supporto bi-direzionale (2 vie), utilizzare proc_open().

Vedere anche:

  • pclose() - Chiude un puntatore ad un file di processo
  • fopen() - Apre un file o un URL
  • proc_open() - Execute a command and open file pointers for input/output