리눅스에서 C로 프로그래밍을 할때, 리눅스 기본 명령어를 C프로그램 안에서
호출해야 할 상황이 간혹가다 생긴다.
나같은경우는 리눅스에 C로만든 서버를 심고, 필요할때 마다, cpu usage나, mem uage,
디스트 쿼터 , 또는 서버들의 상태를 읽어서 클라이언트쪽에다가 전송하길 원한다.
이때, 이미 리눅스에서는 유용한 쉘 명령어 들이 존재하기 때문에 C언어에서 이 명령어들만
호출해주면 된다. 이때 가능한 함수는 system 함수와 popen함수가 있다.
system 함수는 명령어를 실행하고 명령 성공 여부에 관한 결과만 가져오지만,
popen 함수는 실행 명령어 결과를 스트링으로 가져 올 수 있다.
예를 들어
A 서버에 C언어로 작성된 프로그램을 심었다.
여기서 B,C,D .. n 개의 서버가 살아 있는지 ping을 날려보고 싶다.
이때 c 프로그램안에 popen 함수를 이용하여 각 서버에 ping을 날려보고 결과를 참고하면된다. (극히 제한된 일부 예제이다.. 활용은 무궁무진해 보인다. )
예제 소스코드 >
결과 >
위와 같은 결과를 얻을 수 있다.
몇일동안 서버들에서 정보를 어떻게 가져올까 고민하다가 찾은 방법이다... 잘만 활용하면 매우 유용할 듯하다.
이제 서버와 자바 클라이언트 사이에 통신만 원활하게 작성하면 기본 기능은 얼추 될것같다. .
주말에 밤새 열코딩 해야겠네 ㅠ.ㅠ
호출해야 할 상황이 간혹가다 생긴다.
나같은경우는 리눅스에 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 |