popen()
- 명령어를 shell을 기동 시켜서 열고 pipe로 연결한다.
- 이를 위해서 내부적으로 fork(), pipe()를 사용한다.
- 실행 쉘인 /bin/sh에 -c 옵션을 사용하여 전달
pclose()
- popen으로 열린 파이프 핸들 사용을 종료한다.
#include#include #include #include int main() { FILE *fp = NULL; char cmd[1024] = {0,}; char buffer[1024]; pid_t ppid; pid_t *pid; snprintf(cmd, sizeof(cmd), "pidof -x /usr/sbin/sshd"); fp = popen(cmd, "r"); if( fp==NULL) { return -1; } fgets(buffer, sizeof(buffer), fp) ; printf("%s\n", buffer); pclose(fp); return 0; }
실행결과 화면 $ ./a.out 5967
=============================================
그냥 pidof 명령을 실행해준다. 내부의 ssh데몬의 pid를 가져다가
뿌려주는 역할을 한다.
반응형
'Language > C' 카테고리의 다른 글
C FAQ (포인터 선언 에러) (7) | 2012.07.12 |
---|---|
mkfifo 함수 예제 (471) | 2012.07.06 |
pipe 함수 예제 (451) | 2012.07.06 |
다차원 배열을 1차원 배열로 변경하고자 할 때 (161) | 2011.08.11 |
C언어 - 스트림(Stream)이란? (154) | 2011.08.11 |