제목을 어떻게 적을까 고민을 많이 했는데 잘 모르겠네요.
한마디로 말씀 드리자면, ipconfig.exe나 nslookup.exe등과 같이
프로그램을 실행시키면 콘솔창에 결과를 보여주는 프로그램을
우리 프로그램에서 실행한 후 메모리에 결과 값을 담을 수 있는 방법입니다.
파싱하여 쓴다면 필요한 프로그램을 간단하게 제작할 수 있겠죠?

#include <io.h>
#include <fcntl.h>
#include <process.h>

#define WRITE_HANDLE 1
#define READ_HANDLE 0
#define OUT_BUFF_SIZE 1024

int main()
{

    HANDLE hProcess;
    int hStdOut;
    int hStdOutPipe[2];
   
    // Create the pipe
    if(_pipe(hStdOutPipe, 512, O_BINARY | O_NOINHERIT) == -1)
        return    1;
   
    // Duplicate stdout handle (next line will close original)
    hStdOut = _dup(_fileno(stdout));
   
    // Duplicate write end of pipe to stdout handle
    if(_dup2(hStdOutPipe[WRITE_HANDLE], _fileno(stdout)) != 0)
        return    2;
   
    // Close original write end of pipe
    close(hStdOutPipe[WRITE_HANDLE]);
   
    // Spawn process
    //hProcess = (HANDLE)spawnlp(P_NOWAIT, "nslookup.exe", "nslookup.exe", "www.naver.com", NULL);
    hProcess = (HANDLE)spawnlp(P_NOWAIT, "ipconfig.exe", "ipconfig.exe", NULL);
   
    // Duplicate copy of original stdout back into stdout
    if(_dup2(hStdOut, _fileno(stdout)) != 0)
        return    3;
   
    // Close duplicate copy of original stdout
    close(hStdOut);
   
    if(hProcess)
    {
        int nOutRead;
        int nExitCode = STILL_ACTIVE;
        char szBuffer[OUT_BUFF_SIZE]={0,};
        while    (nExitCode == STILL_ACTIVE)
        {
            nOutRead = read(hStdOutPipe[READ_HANDLE],
                szBuffer, OUT_BUFF_SIZE);
            if(nOutRead)
            {
                // do something with the output of 'nslookup' that is contained
                // in szBuffer
            }
           
            if(!GetExitCodeProcess(hProcess,(unsigned long*)&nExitCode))
                return 4;
        }
        MessageBox(NULL, szBuffer, "ip", MB_OK);
    }

    return 0;
}
Posted by 띠깜
,