重定向子进程输出到文件

CString elfname;
	CString cmdline;
	CString outfile;
	STARTUPINFO   startupinfo; 
	HANDLE   houtputfile; 
	char buffer[100];
	PROCESS_INFORMATION   pinfo; 
	CDebugTombstoneDlg * pthis = (CDebugTombstoneDlg *) lpParameter;
	int itemID = pthis->m_linenum;
	pthis->m_list.GetItemText(itemID, 1, buffer, 100);
	elfname.Insert(0, buffer);
	cmdline += "arm-linux-androideabi-objdump.exe -C -D -S ";
	elfname.Replace("/","\\");
	cmdline += pthis->m_sympath;
	cmdline += elfname;
	startupinfo.cb=sizeof(STARTUPINFO); 
	GetStartupInfo(&startupinfo); 
	startupinfo.dwFlags=STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; 
	startupinfo.wShowWindow=SW_HIDE; 
	SECURITY_ATTRIBUTES psa={sizeof(psa),NULL,TRUE};;
	psa.bInheritHandle=TRUE;
	outfile += pthis->m_sympath;
	outfile += "\\";
	outfile += "output";
	outfile += itemID + 48;
	outfile += ".txt";
	houtputfile = CreateFile((LPSTR)(LPCTSTR)outfile, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, &psa, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
	startupinfo.hStdOutput = houtputfile;
	startupinfo.hStdInput = houtputfile;
	startupinfo.hStdError = houtputfile;
	if(houtputfile == INVALID_HANDLE_VALUE){ 
		AfxMessageBox("Create file Error!"); 
		return GetLastError(); 
	} 
	if(!CreateProcess(NULL, (LPSTR)(LPCTSTR)cmdline, NULL, NULL, TRUE, NULL, NULL, NULL, &startupinfo, &pinfo)) 
	{
		return GetLastError();
		
	}
	WaitForSingleObject(pinfo.hProcess, 120 * 1000);
	TerminateProcess(pinfo.hProcess, 1);
	CloseHandle(houtputfile);
	return 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值