popen

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

popenAbre um processo como ponteiro de arquivo

Descrição

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

Abre uma pipe para um processo executado ao se dar um fork para o comando dado por command.

Parâmetros

command

O comando

mode

O modo. Pode ser 'r' para leitura ou 'w' para escrita.

No Windows, o padrão de popen() é modo texto, isto é, qualquer caractere \n escrito ou lido do tubo será traduzido para \r\n. Se isto não for desejado, o modo binário pode ser forçado definindo-se o mode para 'rb' e 'wb', respectivamente.

Valor Retornado

Retorna um ponteiro de arquivo idêntico ao retornado por fopen(), exceto que ele é unidirecional (pode ser usado somente para leitura ou gravação) e tem que ser fechado com pclose(). Este ponteiro pode ser usado com fgets(), fgetss() e fwrite(). Quando o modo é 'r', o ponteiro de arquivo retornado é igual ao STDOUT do comando; quando o modo é 'w', o ponteiro de arquivo é igual ao STDIN do comando.

Se um erro ocorrer, retorna false.

Exemplos

Example #1 Exemplo de popen()

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

Se o comando a ser executado não for encontrado, um resource válido é retornado. Isso pode parecer estranho, mas tem sentido: permite que você acesse qualquer mensagem de erro retornado pelo sistema operacional.

Example #2 Exemplo da popen()

<?php
error_reporting(E_ALL);

/* Adiciona redirecionamento para que seja obtido stderr. */
$handle = popen('/caminho/para/executavel 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>

Notas

Note:

Se for necessário suporte bidirecional (duas mãos), use proc_open().

Veja Também

  • pclose() - Fecha o ponteiro de arquivo de processo
  • fopen() - Abre um arquivo ou URL
  • proc_open() - Executa um comando e abre ponteiros de arquivo para entrada/saída