Programming/C,C++,C#

명령어 실행하기 - popen 예제

smok95 2010. 7. 31. 23:40
반응형

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


예제)
* 소스를 복사하시려는 경우 커서를 소스에 위치시키신 후 더블클릭하신후 Ctrl+C 로 복사하시면 됩니다.
#include 
#include    /* errno */
#include   /* 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;
}


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

반응형