차근차근/C

명령어 실행하기 - popen 예제

예쁜꽃이피었으면 2014. 9. 5. 10:58

http://smok95.tistory.com/category/Programming/C/C++



윈도우나 유닉스계열에서 프로그램내에서 시스템 명령이나 특정프로그램을 실행하고 그 결과값을 확인하고자 할때 popen함수를 이용하여 결과를 확인할 수 있습니다.



예제)
* 소스를 복사하시려는 경우 커서를 소스에 위치시키신 후 더블클릭하신후 Ctrl+C 로 복사하시면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <errno.h>   /* errno */
#include <string.h>  /* strerror */
 
#ifdef WIN32
#define popen _popen
#define pclose _pclose
#endif
 
 
int main(int argc, char* argv[])
{
   const char  *pszCommand = "dir";
   FILE        *fp = NULL;
   size_t      readSize = 0;
   char        pszBuff[1024];
 
   // 명령어 실행
   fp = popen(pszCommand, "r");
   if( !fp)
   {
      printf("오류 [%d:%s]\n", errno, strerror(errno));
      return -1;
   }
 
   // 결과값 읽기
   readSize = fread( (void*)pszBuff, sizeof(char), 1024-1, fp );
   if( readSize == 0 )
   {
      pclose(fp);
      printf("오류 [%d:%s]\n", errno, strerror(errno));
      return -1;
   }
 
   pclose(fp);
   pszBuff[readSize]=0;
   
   // 결과 출력
   printf("%s\n", pszBuff);
   return 0;
}
 
</string.h></errno.h></stdio.h>

참고사이트
http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/2/popen#AEN8
http://msdn.microsoft.com/ko-kr/library/96ayss4b(VS.90).aspx






반응형