Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés
Esta documentación está archivada y no tiene mantenimiento.

_popen, _wpopen

Crea una canalización y ejecuta un comando.

Nota importante Importante

Esta API no se puede utilizar en las aplicaciones que se ejecutan en tiempo de ejecución de Windows. Para obtener más información, vea Funciones CRT no compatibles con /ZW.

FILE *_popen( const char *command, const char *mode ); FILE *_wpopen( const wchar_t *command, const wchar_t *mode );

comando

Comando de ejecutarse.

mode

Modo de la secuencia devuelta.

Devuelve una secuencia asociada a un extremo de la canalización creada. El otro extremo de la canalización se asocia a la salida estándar de entrada o del estándar de comando todos los generado. Las funciones nulo return en un error. Si el error es un parámetro no válido, como si el comando o el modo es un puntero NULL, o el modo no es un modo válido, errno se establece en EINVAL. Vea la sección comentarios de los modos válidos.

Para obtener información sobre éstos y otros códigos de error, vea _doserrno, errno, _sys_errlist, y _sys_nerr.

La función de _popen crea una canalización y ejecuta de forma asincrónica una copia todos los generada del procesador de comandos con el comando de la cadena especificada. El modo de la cadena de caracteres especifica el tipo de acceso solicitado, como sigue.

"r"

El proceso de llamada puede leer la salida estándar de comando todos los generado mediante la secuencia devuelta.

"w"

El proceso de llamada puede escribir la entrada estándar de comando todos los generado mediante la secuencia devuelta.

"b"

Abra en modo binario.

"t"

Abra en modo de texto.

Nota Nota

Si se utiliza en un programa de Windows, la función de _popen devuelve un puntero de archivo no válido que haga el programa deje de responder indefinidamente. _popen funciona correctamente en una aplicación de consola. Para crear una aplicación para Windows que redirija entrada y salida, vea Crear un proceso secundario con la entrada y salida redirigidas en Windows SDK.

_wpopen es una versión con caracteres anchos de _popen; el argumento de la ruta de acceso a _wpopen es una cadena de caracteres. _wpopen y _popen se comportan exactamente igual de otra manera.

Asignaciones de la rutina de Genérico- texto

Rutina de Tchar.h

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tpopen

_popen

_popen

_wpopen

Rutina

Encabezado necesario

_popen

<stdio.h>

_wpopen

<stdio.h> o <wchar.h>

Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.

Bibliotecas

// crt_popen.c
/* This program uses _popen and _pclose to receive a 
 * stream of text from a system process.
 */

#include <stdio.h>
#include <stdlib.h>

int main( void )
{

   char   psBuffer[128];
   FILE   *pPipe;

        /* Run DIR so that it writes its output to a pipe. Open this
         * pipe with read text attribute so that we can read it 
         * like a text file. 
         */

   if( (pPipe = _popen( "dir *.c /on /p", "rt" )) == NULL )
      exit( 1 );

   /* Read pipe until end of file, or an error occurs. */

   while(fgets(psBuffer, 128, pPipe))
   {
      printf(psBuffer);
   }


   /* Close pipe and print return value of pPipe. */
   if (feof( pPipe))
   {
     printf( "\nProcess returned %d\n", _pclose( pPipe ) );
   }
   else
   {
     printf( "Error: Failed to read the pipe to the end.\n");
   }
}

Este resultado se supone que sólo hay un archivo en el directorio actual con la extensión de nombre de archivo.c.

 Volume in drive C is CDRIVE
 Volume Serial Number is 0E17-1702

 Directory of D:\proj\console\test1

07/17/98  07:26p                   780 popen.c
               1 File(s)            780 bytes
                             86,597,632 bytes free

Process returned 0

No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.

Mostrar: