[linux] External Process Handling

1. 외부 프로세스의 결과값 받아오기

popen으로 깔끔하게 해결할 수 있다.

char* cmd="uname";
FILE* fp=popen(cmd,"r");
std::string buffer;
char c;
while(fread(&c,1,1,fp)==1 && c!=EOF) {
    buffer.push_back(c);
}
std::cout << buffer << std::endl;

buffer overflow 를 유의해야 하므로, 미리 버퍼의 크기를 구하면 좋겠지만 이건 파일이 아니므로 구할 수 없다. (ftell함수가 동작안함)
하나씩 읽어 EOF가 나올때 까지 읽는 수 밖에 없고 rewind 와 같은 함수로 돌아갈수도 없다.

2. 외부 프로세스 제어하기

http://channelofchaos.tistory.com/55
https://stackoverflow.com/questions/22245237/execlp-redirect-stdin-in-c
https://stackoverflow.com/questions/6493674/redirecting-the-execlp-output-to-a-file

References