微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 使用句柄从CreateProcess()收集输出

我正在使用CreateProcess()从我的GUI应用程序在 Windows中运行外部控制台应用程序.我想以某种方式收集输出,以了解是否有错误.现在我知道我必须用hStdOutput做一些事情,但我不明白是什么.我是c和一个没有经验的程序员的新手,我实际上不知道如何处理手柄或如何点亮管道.

如何将输出转换为某种变量(或文件)?

这就是我现在所拥有的:

void email::run(string path,string cmd){


    WCHAR * ppath=new(nothrow) WCHAR[path.length()*2];
    memset(ppath,' ',path.length()*2);
    WCHAR * pcmd= new(nothrow) WCHAR[cmd.length()*2];
    memset(pcmd,cmd.length()*2);

    string tempstr;


    ToWCHAR(path,ppath);  //creates WCHAR from my std::string
    ToWCHAR(cmd,pcmd);

    STARTUPINFO info={sizeof(info)};
    info.dwFlags = STARTF_USESHOWWINDOW;    //hide process

    PROCESS_informatION processInfo;

    if (CreateProcess(ppath,pcmd,NULL,FALSE,&info,&processInfo))
        {
        ::WaitForSingleObject(processInfo.hProcess,INFINITE);

        CloseHandle(processInfo.hProcess);
        CloseHandle(processInfo.hThread);
        }

    delete[](ppath);
    delete[](pcmd);
}

这段代码可能让任何体面的程序员尖叫,但(我甚至不应该说:)它的工作原理;-)

问题:如何使用hStdOutput读取文件输出(例如)?

解决方法

原文地址:https://www.jb51.cc/c/118587.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐