pclose(3)

#include <stdio.h>

int pclose(FILE *stream);

popen(3)으로 생성한 pipe stream을 close합니다. FILE *이지만 flcose(3)로 닫지 않습니다. pclose(3)는 wait4(2)로 popen(3)한 프로세스의 종료를 대기한 후에 프로그램이 종료되면 return됩니다.

 

 

파라미터

stream
    -  popen(3)으로 생성한 pipe stream.

 

RETURN

-1 이외
    - 정상적으로 pipe stream이 close되었습니다.

-1
    - 오류가 발생하였으며, 상세 오류내용은 errno 전역변수에 설정됩니다.

 


활용 예제

 

Sample. ls -al 명령어의 결과를 받아서 활용하는 sample

#include <stdio.h>
#include <errno.h>

int main(int argc, char *argv[])
{
    char line[4096];
    FILE *fp;

    if((fp = popen("ls -al", "r")) == NULL) {
        fprintf(stderr, "pipe open error: %s\n", strerror(errno));
        return 1;
    }

    while(fgets(line, 4096, fp) != NULL) {
        printf("%s", line);
        /* 또는 ls -al 결과를 parsing하여 활용하는 로직... */
    }

    pclose(fp);
    return 0;
}

 


 

see also :  popen(3) popen(3), pclose(3)의 활용 - 다른 프로세스의 표준 입/출력 제어하기

 

 

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요