본문 바로가기

Progamming/C/C++

유용한 popen 함수 / system 함수 대용

리눅스에서 C로 프로그래밍을 할때, 리눅스 기본 명령어를 C프로그램 안에서

호출해야 할 상황이 간혹가다 생긴다.

나같은경우는 리눅스에 C로만든 서버를 심고, 필요할때 마다, cpu usage나, mem uage,

디스트 쿼터 , 또는 서버들의 상태를 읽어서 클라이언트쪽에다가 전송하길 원한다.

이때, 이미 리눅스에서는 유용한 쉘 명령어 들이 존재하기 때문에 C언어에서 이 명령어들만

호출해주면 된다. 이때 가능한 함수는 system 함수와 popen함수가 있다.

system 함수는 명령어를 실행하고 명령 성공 여부에 관한 결과만 가져오지만,

popen 함수는 실행 명령어 결과를 스트링으로 가져 올 수 있다.

예를 들어

A 서버에 C언어로 작성된 프로그램을 심었다.

여기서 B,C,D .. n 개의 서버가 살아 있는지 ping을 날려보고 싶다.

이때 c 프로그램안에 popen  함수를 이용하여 각 서버에 ping을 날려보고 결과를 참고하면된다. (극히 제한된 일부 예제이다.. 활용은 무궁무진해 보인다. )



예제 소스코드 >







결과 >



위와 같은 결과를 얻을 수 있다.






몇일동안 서버들에서 정보를 어떻게 가져올까 고민하다가 찾은 방법이다... 잘만 활용하면 매우 유용할 듯하다.

이제 서버와 자바 클라이언트 사이에 통신만 원활하게 작성하면 기본 기능은 얼추 될것같다. .

주말에 밤새 열코딩 해야겠네 ㅠ.ㅠ

'Progamming > C/C++' 카테고리의 다른 글

C Server와 Java Client 통신 예제  (1) 2011.07.11
ioctl 과 FIONREAD  (0) 2011.07.11