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、

  • 相关阅读:
    83. Remove Duplicates from Sorted List
    35. Search Insert Position
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    117. Populating Next Right Pointers in Each Node II
    116. Populating Next Right Pointers in Each Node
    111. Minimum Depth of Binary Tree
    169. Majority Element
    171. Excel Sheet Column Number
    190. Reverse Bits
  • 原文地址:https://www.cnblogs.com/cppskill/p/10075109.html
Copyright © 2011-2022 走看看