_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. 자세한 내용은 플랫폼 호출 예제.