2010-07-12 4 views
1

나는 C 코드로 파일 IO를하고있다. 내 파일에 특정 패턴이 있습니다. 쉘 명령 cat abc.txt | grep abc | wc -l을 사용하여이를 확인할 수 있습니다. System()을 사용하여 동일한 명령을 실행하면 적절한 결과를 얻을 수 있지만 출력에 변수가 포함될 수 있으며 C 코드 자체에서 비교할 수있는 방법이 없습니다.시스템 ('ls')의 출력을 읽는 방법은 무엇입니까?

WEXITSTATUS()을 사용하여 제안되는 설명서 페이지를 살펴 보았습니다. 이것은 실제로 실행 상태를 반환하고 출력하지 않습니다.

F1 !!

+3

참고로 'ls'의 출력을 구문 분석하지 마십시오. 그리고'system()'을 통한 쉘 호출보다 파일 IO에 더 나은 옵션이 있다는 것을 알아 두십시오. – Stephen

+0

"F1"은 무엇을 의미합니까? – bk1e

답변

7

system(3)을 원하지 않습니다. popen(3)과 친구들을보십시오.

+0

+1 여기에이 예가 나와 있습니다. http://www.metalshell.com/source_code/23/Popen.html – DRL

+0

셸을 호출해도 동일한 문제가 발생하지 않습니까? – Tom

+0

@Tom 나는 실행을 위해 요청 된 프로그램이 호출 프로세스의 $ PATH에없는 경우에만 유일한 주요 문제라고 생각했을 것입니다. – DRL

1

grep 및 wc가 수행중인 작업은 파이프의 일부로 STDIN 파일 핸들을 읽는 것입니다. 운영자.

관련 문제