다음을 통해 공유


_popen, _wpopen

파이프를 만든 다음 명령을 실행 합니다.

중요중요

이 API는 Windows 런타임에서 실행 되는 응용 프로그램에서 사용할 수 없습니다.자세한 내용은 /zw에 지원 되는 CRT 함수.

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

매개 변수

  • 명령
    실행할 명령입니다.

  • mode
    반환 된 스트림의 모드입니다.

반환 값

만든된 파이프의 한쪽 끝을 연결 하는 스트림을 반환 합니다.파이프의 다른 쪽 끝은 생성 된 명령의 표준 입력 이나 표준 출력에 관련이 있습니다.함수를 반환 합니다. NULL 에 오류가 있습니다.오류 같은 경우 잘못 된 매개 변수가 있으면 명령 또는 모드 은 null 포인터입니다. 또는 모드 는 올바른 모드가 아닙니다 errno 로 설정 된 EINVAL.유효한 모드에 대한 설명 단원을 참조 하십시오.

이러한 문제 및 기타 오류 코드에 대한 내용은 _sys_nerr, _doserrno, errno, _sys_errlist,.

설명

_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