zoukankan      html  css  js  c++  java
  • VC.重定向标准输出到文件(父进程方式)

    1、libxml2 使用过程中,有时 libxml2里面会报一些错误信息,在 控制台的程序中 这些信息看起来比较乱,不易观察,我想将这些信息重定向到 文件中

     1.1、本进程内:试着 将标准输出,标准错误等 重定向,但是 我的代码里面的标准输出和标准错误 都能重定向,但是libxml2中的信息 却重定向不成功... 试了好些方法都不行...

      忘了具体 使用了哪些方式了....

     1.2、父进程:通过父进程来重定向子进程的 标准输出和标准错误 到文件 --> 成功了 而且 不麻烦(这里就是采用的这个方式)

    2、

      2.1、参考网址:

      2.2、测试代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    #include <io.h>
    
    #include <map>
    #include <math.h>
    #include <list>
    #include <string>
    #include <sstream>
    #include <algorithm>// std::find(...)
    #include <vector>
    using namespace std;
    
    //#include "stdafx.h"
    #include <iostream>
    #include <windows.h>
    #include <math.h>
    using namespace std;
    
    
    void main()
    {
    // ZC: baidu搜索"STARTUPINFO hStdOutput 重定向"
    // ZC: https://blog.csdn.net/cqupt_chen/article/details/8364259
    
      // ZC: 部分(1) SECURITY_ATTRIBUTES sa= {sizeof(sa),NULL,TRUE};; sa.bInheritHandle = TRUE; //FILE* fp = fopen("D:\G_DR_2018\_G2SVG_Console_VS08\_G2SVG_Console_VS08\LOG\zz.txt", "w+"); HANDLE houtputfile = CreateFileA("D:\G_DR_2018\_G2SVG_Console_VS08\_G2SVG_Console_VS08\LOG\zz.txt", GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, &sa, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
      // ZC: 部分(2)
    //#define EXECDOSCMD "dir c:" //可以换成你的命令 #define EXECDOSCMD "_G2SVG_Console_VS08.exe" //可以换成你的命令 char command[1024]; //长达1K的命令行,够用了吧 strcpy(command,"Cmd.exe /C "); //strcpy(command,"Cmd.exe "); strcat(command,EXECDOSCMD);
      // ZC: 部分(3) STARTUPINFOA si; PROCESS_INFORMATION pi; si.cb
    = sizeof(STARTUPINFO); GetStartupInfoA(&si); //si.hStdError = fp; //把创建进程的标准错误输出重定向到管道输入 //si.hStdOutput = fp; //把创建进程的标准输出重定向到管道输入 si.hStdError = houtputfile; si.hStdOutput = houtputfile; si.wShowWindow = SW_HIDE; si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; //关键步骤,CreateProcess函数参数意义请查阅MSDN if (!CreateProcessA(NULL, command, NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) { printf("err01 "); //CloseHandle(hWrite); return; } //CloseHandle(hWrite); WaitForSingleObject(pi.hProcess, 120 * 1000); system("pause"); }

    3、

    4、

    5、

  • 相关阅读:
    词法分析程序
    关于编译原理
    超神c语言文法
    linux基本命令
    用bat来注册ocx
    当web配置文件 appSettings配置的东西越来越多时,可以拆开了。
    MVC的URL路由规则
    ASP.NET MVC 中如何实现基于角色的权限控制
    查cc攻击
    关于session介绍
  • 原文地址:https://www.cnblogs.com/cppskill/p/10075109.html
Copyright © 2011-2022 走看看