Поделиться через


_popen, _wpopen

Создает канал и поиска.

Важное примечаниеВажно

Этот API нельзя использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в разделе Функции CRT не поддерживаются при /ZW.

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

Параметры

  • command
    Команда быть выполнять.

  • mode
    Режим возвращаемого потока.

Возвращаемое значение

Возвращает поток, связанный с одним конца создаваемого канала.Другой конец канала связан с входными данными или стандартным выводом порожданной стандартные команды.Функции возвращают NULL в ошибке.Если ошибка недопустимый параметр, например, если команда или режим указатель, или режим, не является допустимым режимом errno установлено значение EINVAL.В разделе комментария для допустимых режимов.

Дополнительные сведения об этих и других кодах ошибок см. в разделе _doserrno, errno, _sys_errlist и _sys_nerr.

Заметки

Функция _popen создает канал и асинхронно выполняет порожданное копию процессора команды с помощью команды указанной строки.Режим символьной строки требуемые определяет тип доступа к следующим образом.

  • "r"
    Вызывающий процесс может считывать стандартный вывод порожданной команды с помощью возвращает поток.

  • "w"
    Вызывающий процесс может записывать для ввода порожданной команды с помощью стандартного возвращает поток.

  • "b"
    Открыть в бинарном режиме.

  • "t"
    Открыть в режиме текста.

    ПримечаниеПримечание

    Если используется в программе Windows, функция _popen возвращает недопустимый указатель, файла, заставит программу перестать отвечать неопределенно._popen правильно работает в консольном приложении.Для создания Windows-приложение, которое перенаправляет ввод и вывод см. в разделе Создание дочерний процесс с входными данными и перенаправленные выводом в Windows SDK.

версия _wpopen является _popen; аргумент пути к _wpopen характерная черта.В остальных случаях поведение _wpopen и _popen идентично.

Универсальное текстовое сопоставление функций

Подпрограмма TCHAR.H

Не указаны _UNICODE и _MBCS

определенные _MBCS

Определение _UNICODE

_tpopen

_popen

_popen

_wpopen

Требования

Функция

Требуемый заголовок

_popen

<stdio.h>

_wpopen

<stdio.h> или <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Библиотеки

Все версии Библиотек времени выполнения C.

Пример

// 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");
   }
}

Пример результатов выполнения

Этот результат высказывать существует только один файл в текущем каталоге с расширением имени файла 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

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Процесс и управление среды

_pclose

_pipe