출력 내용을 다른 프로그램의 입력 내용을 파이프로 전달
파이프란 한 프로그램 프로세스에서 다른 프로세스로 정보를 전달하는 기술
즉 우리가 알고있는 파이프 =연결 통로라 생각하면된다.
popen 함수는 명령어를 표준 입력/출력 장치 를 활용하여 주고 받기 위해 파일 디스크립터를 오픈함
Input / Output 파이프 를 open 함
popen
설명 파일을 사용하기 위해 열기(open)합니다
헤더 #include <fcntl.h> //헤더파일
형태 FILE *popen(const char *command, const char *type);
인수[in] const char *command 실행할 명령어
const char *type PIPE 사용목적
'r' - 파이프로 표준 출력 내용을 읽기위함
'w' - 파이프로 표준 입력으로 데이터를 입력함
리턴값 FILE* 성공시 FILE* != NULL 실패 FILE* == NULL |
예제
#include<stdio.h>
#include<string.h>
#define BUF_SIZE 1024
int main(void)
{
char buff[BUF_SIZE];
FILE *fp;
fp = popen( "ipconfig", "r");
if ( NULL == fp)
{
perror( "popen() 실패");
return -1;
}
if (fp != NULL) {
memset(buff,0x00,sizeof(buff));
while( fgets( buff, BUF_SIZE, fp) ) {
if (buff != NULL) {
printf("%s",buff);
}
memset(buff,0,sizeof(buff));
}
}
pclose( fp);
return 0;
}
출력
]$ ./a.out
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: 82A3-6BAA
C:\Users\ziwas\OneDrive\문서 디렉터리
2018-01-30 오후 09:48 <DIR> .
2018-01-30 오후 09:48 <DIR> ..
2018-01-29 오후 10:49 153,338 callback.exe
2018-01-29 오후 10:50 92 callback.layout
2018-01-29 오후 10:51 76 main.c
2018-01-29 오후 10:51 22,317 main.o
2018-01-30 오후 09:48 1,153 Makefile.win
2018-01-30 오후 09:48 946 test.c
2018-01-29 오후 11:57 1,010 test.dev
2018-01-30 오후 09:48 127,449 test.exe
2018-01-29 오후 11:57 93 test.layout
2018-01-30 오후 09:48 23,608 test.o
10개 파일 330,082 바이트
2개 디렉터리 54,489,231,360 바이트 남음
]$
'C언어 > 함수' 카테고리의 다른 글
open - 파일 열기 (0) | 2018.01.25 |
---|---|
fstat -파일의 상태 및 정보 (0) | 2018.01.24 |
ftell - 현재 읽기/쓰기 위치 (0) | 2018.01.23 |
ftell (0) | 2018.01.21 |
feof -파일의 끝 (0) | 2018.01.21 |
WRITTEN BY