popen 서브루틴

용도

프로세스에 대한 파이프를 시작합니다.

라이브러리

표준 C 라이브러리(libc.a)

구문

#include <stdio.h>
FILE *popen ( Command,  Type)
const char *Command, *Type;

설명

Popen 서브루틴은 호출 프로그램과 실행할 셸 명령 사이에 파이프를 생성합니다.

참고: popen 서브루틴은 sh 셸 명령만 실행합니다. Command 매개변수가 유효한 sh 셸 명령이 아닌 경우 결과를 예측할 수 없습니다. 터미널이 신뢰할 수 있는 상태이면 tsh 셸 명령이 실행됩니다.

이전에 popen 하위 루틴을 호출하여 열린 스트림이 부모 프로세스에서 열려 있는 경우, popen 하위 루틴은 자식 프로세스에서 해당 스트림을 닫습니다.

Popen 서브루틴은 스트림의 FILE 구조에 대한 포인터를 반환합니다.

주의: 원래 프로세스와 popen 서브루틴으로 시작된 프로세스가 동시에 공통 파일을 읽거나 쓰는 경우, 둘 다 버퍼링된 I/O를 사용해서는 안 됩니다. 이 경우 결과를 예측할 수 없습니다.

출력 필터의 일부 문제는 fflush 서브루틴으로 버퍼를 플러시하여 방지할 수 있습니다.

매개변수

항목 설명
명령 쉘 명령행을 포함하는 널 (null) 로 끝나는 문자열을 가리킵니다.
type 입출력 모드를 포함하는 널 (NULL) 종료 문자열을 가리킵니다. Type 매개변수가 값 r인 경우, 명령의 표준 출력에서 Stream 파일에서 읽어서 읽을 수 있습니다. Type 매개변수가 w 값인 경우, 명령의 표준 입력은 Stream 파일에 쓰는 방식으로 작성할 수 있습니다.

열린 파일은 공유되므로 입력 필터로 r형 명령을, 출력 필터로 w형 명령을 사용할 수 있습니다.

리턴 값

Popen 서브루틴은 파일이나 프로세스를 만들 수 없거나 셸에 액세스할 수 없는 경우 null 포인터를 반환합니다.

오류 코드

Type 매개변수가 유효하지 않은 경우 popen 서브루틴은 EINVAL 변수를 설정할 수 있습니다. 팝엔 서브루틴은 포크 또는 파이프 서브루틴에서 설명한 대로 errno 전역 변수를 설정할 수도 있습니다.