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、

  • 相关阅读:
    20155203 《深入理解计算机系统》第五章学习总结
    2017-2018-1 20155203 20155204 实验五 通讯协议设计
    20155203 《信息安全系统设计基础》第十一周学习总结
    2017-2018-1 20155203 20155204 实验四 外设驱动程序设计
    课上第六章测试(补)
    20155203 《信息安全系统设计基础》第九周学习总结
    2017-2018-1 20155203 实验三 实时系统
    mypwd的编译和测试
    第二周 第三周 课下实践补交
    课上测试 补交及重做 深刻的教训
  • 原文地址:https://www.cnblogs.com/cppskill/p/10075109.html
Copyright © 2011-2022 走看看