您当前的位置: 首页 >  windows

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

c++调用子进程捕获输出(windows,linux)

qianbo_insist 发布时间:2021-07-30 17:34:46 ,浏览量:0

1、windows

在windows上使用API函数CreateProcessW函数或者winexe 来启动新的进程,执行cmd命令:

int execute(const TCHAR *childexe)   
{   

    SECURITY_ATTRIBUTES sa = {0};                                              
    HANDLE hRead = NULL, hWrite = NULL;                                                
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);    
    sa.lpSecurityDescriptor = NULL;    
    sa.bInheritHandle = TRUE;    
    if (!CreatePipe(&hRead, &hWrite, &sa,0))                             
    {    
        return false;    
    }    
    HANDLE hTemp = GetStdHandle(STD_OUTPUT_HANDLE);
	SetStdHandle(STD_OUTPUT_HANDLE,hTemp);
	
    STARTUPINFO si = {0};    
    PROCESS_INFORMATION pi = {0};    
    si.cb = sizeof(STARTUPINFO);    
    GetStartupInfo(&si);   
    si.hStdError = hWrite;                                              
    si.hStdOutput = hWrite;                                                       si.wShowWindow = SW_HIDE;    
    si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;    
    bRet = CreateProcess(NULL,childexe,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi);
    if (!bRet))             
    {    
        CloseHandle(hWrite);   
        CloseHandle(hRead);   
        return false;   
    }    
    
	
	CloseHandle(hWrite);
	char ReadBuff[256] = {0};
	while(ReadFile(hRead,ReadBuff,256,&ReadNum,NULL))
	{
		ReadBuff[ReadNum] = '\0';
		cout             
关注
打赏
1663161521
查看更多评论
0.2061s