使用参数 + stdout + stderr 从命令行调用 MFC 应用程序

Posted

技术标签:

【中文标题】使用参数 + stdout + stderr 从命令行调用 MFC 应用程序【英文标题】:Calling MFC application from command line with arguments + stdout + stderr 【发布时间】:2017-08-01 17:04:06 【问题描述】:

我正在尝试使用命令行输入参数调用我的 MFC 应用程序。

我希望应用程序将输出打印到一个文件并将错误打印到另一个文件。

所以除了输入参数之外,我还传递了1>out.txt 2>err.txt

总的来说,命令行看起来像:

start /w app.exe arg1 arg2 arg3 1>out.txt 2>err.txt

它似乎确实工作了一段时间,将结果写入两个文件。

但是,它在某个时候停止了,所以我想我做错了什么。

这是我的代码:

头文件:

class CMyWinApp : public CWinApp

public:
    BOOL InitInstance();
;

源文件:

CMyWinApp myWinApp;

BOOL CMyWinApp::InitInstance()

    CWinApp::InitInstance();       
    int iNumOfArgs;
    LPWSTR* pArgs = CommandLineToArgvW(GetCommandLine(),&iNumOfArgs);
    for (int iArgNum=1; iArgNum<iNumOfArgs; iArgNum++)
    
        fprintf(stdout,"%ls\n",pArgs[iArgNum]);
        fprintf(stderr,"%ls\n",pArgs[iArgNum]);
    

我到底做错了什么?

谢谢。

【问题讨论】:

【参考方案1】:

好的,问题解决了:

我在某个时候添加了start /w,以强制等待完成。

由于某种原因,没有将任何内容写入两个目标文件。

【讨论】:

以上是关于使用参数 + stdout + stderr 从命令行调用 MFC 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用 Autohotkey 读取 StdErr 和 StdOut

使用python sh模块,如何保存组合的stdout和stderr?

命令输出(stdout,stderr)未重定向到管道

使用 stdout/stderr 以外的管道与子进程通信

将Java 8 GC日志重定向到stderr

我应该将消息记录到 stderr 还是 stdout?