이런식으로 하시면 실행 결과를 한줄씩 읽을 수 있을 뿐만 아니라, 문자열을 쉽게 취할 수 있고, 게다가 쉘 스크립트나 다른 기교를 사용하지 않고도 직관적으로 이해할 수 있는 프로그램이 나올겁니다. 가장 좋은 방법은 윗분 말씀대로 파이프를 쓰는것이 맞지 않나 싶지만.. 질문자께서는 같은 문제로 다른 질문을 반복해서 올리시고 계시는군요. 그냥 간단하고 무식(?)하게 코딩해버리세요.
10분에 한번 동작할 프로그램이고, 프로그램의 동작이 복잡하지 않은 편이기에 성능문제는 신경쓰지 않아도 된다고 봅니다.
[quote]#include <stdio.h>main(
대충 위와 같이 하면 될듯합니다.
line변수에 줄단위로 들어오겠지요.
위의 shell script결과는 한줄이지만(원하는 결과인지도 모르지만), 여러줄인 경우 라인단위처리는 위와 같이 하면 대충 쓸 수 있겠지요.
* popen()의 단점은 출력만 또는 입력만 받을 수 있다는 것이지요. 만일 입출력을 모두 제어하고 싶다면, 역시 파이프로 엮어서 해야 겠지요?!
...
비단 유닉스 뿐만이 아니라, 거의 모든 환경에서 공통적으로 지켜야 할 원칙이 있습니다.
KISS( Keep It Simple and Short )
/* 약자에 대해서는 여러 의견이 있습니다( Keep It Simple, Stupid! 라는 의견을 포함하여 )만, 대강의 의미는 위와 같죠 */
굳이 system() 함수를 쓰고 싶으시면, ps 의 실행 결과를 파일로 리다이렉션해서, 그 파일을 읽어보심이 어떨런지요.
system( "ps -aux > /etc/pstemp" );
fp = fopen( "/etc/pstemp", "r" );
fgets( fp );
...
이런식으로 하시면 실행 결과를 한줄씩 읽을 수 있을 뿐만 아니라, 문자열을 쉽게 취할 수 있고, 게다가 쉘 스크립트나 다른 기교를 사용하지 않고도 직관적으로 이해할 수 있는 프로그램이 나올겁니다. 가장 좋은 방법은 윗분 말씀대로 파이프를 쓰는것이 맞지 않나 싶지만.. 질문자께서는 같은 문제로 다른 질문을 반복해서 올리시고 계시는군요. 그냥 간단하고 무식(?)하게 코딩해버리세요.
10분에 한번 동작할 프로그램이고, 프로그램의 동작이 복잡하지 않은 편이기에 성능문제는 신경쓰지 않아도 된다고 봅니다.
댓글 달기