sub-rotina popen

Propósito

Inicia um pipe para um processo.

Biblioteca

Biblioteca C padrão (libc.a)

Sintaxe

#include <stdio.h>

FILE *popen ( Command,  Type)
const char *Command, *Type;

Descrição

A sub-rotina popen cria um canal entre o programa de chamada e um comando shell a ser executado..

Nota: a sub-rotina popen executa apenas comandos shell sh . Os resultados serão imprevisíveis se o parâmetro Command não for um comando shell sh válido Se o terminal estiver em um estado confiável, os comandos shell tsh serão executados..

Se os fluxos abertos por chamadas anteriores para a sub-rotina popen permanecerem abertos no processo pai, a sub-rotina popen os fechará no processo filho.

A sub-rotina popen retorna um ponteiro para uma estrutura FILE do fluxo.

Atenção: Se os processos originais e o processo iniciados com a subrotina popen simultaneamente lerem ou gravarem um arquivo comum, também não deverá usar E/S em buffer. Se o fazem, os resultados são imprevisíveis.

Alguns problemas com um filtro de saída podem ser evitados, limpando o buffer com a sub-rotina fflush

Parâmetros

Tabela 1. Parâmetros
Item Descrição
Comando Aponta para uma cadeia terminada em null contendo uma linha de comando shell.
Tipo Aponta para uma cadeia terminada em null contendo um modo de E/S. Se o parâmetro Type for o valor r, será possível ler a partir da saída padrão do comando lendo a partir do arquivo Stream. Se o parâmetro Type for o valor w, será possível gravar na entrada padrão do comando gravando no arquivo Stream.

Como os arquivos abertos são compartilhados, um comando type r pode ser usado como um filtro de entrada e um comando type w como um filtro de saída.

Valores De Retorno

A sub-rotina popen retorna um ponteiro nulo se arquivos ou processos não puderem ser criados ou se o shell não puder ser acessado.

Códigos De Erro

A sub-rotina popen configurará a variável EINVAL se o parâmetro Type não for válido. A sub-rotina popen também pode configurar variáveis globais errno conforme descrito pelas sub-rotinas fork ou pipe .