草庐IT

c++ - 如何从 Windows 10 中的 UWP 控制台应用程序访问到标准输出的输出?

我在VisualStudio2017中创建了一个测试C++UWP控制台应用程序("app3.exe")打印一个字符串到标准输出。在命令提示符或PowerShell上运行时,我可以看到输出,但看不到其他任何东西。例如,我可以使用app3.exe>a_file.txt编写命令输出,它会创建一个空白文件。我怀疑这与Windows在另一个没有输出到stdout(输出到stdout的函数)有关。我只想能够访问我程序的stdout输出。任何建议表示赞赏。示例代码如下:intmain(){printf("Thisisoutput");std::cout我已经把它修剪到只剩骨头了。不管怎样,我运行的是

c++ - 将 stdout/stderr 重定向到 unix c++ 下的文件 - 再次

这个问题在这里已经有了答案:C++:RedirectingSTDOUT(7个答案)关闭5个月前。我想做什么将stdout和stderr从c++内部重定向到一个或多个文件为什么我需要它我正在使用一个外部的、预编译的第三方库,它会产生大量的输出,我想将其重定向到一个日志文件以保持控制台干净。条件兼容性不是问题,代码只会在Unix系统上运行。重定向不仅会影响C++风格的打印(std::cout),还会影响C风格的打印(printf("helloworld\n"))。到目前为止我尝试了什么我在stackoverflow上浏览了半天,阅读了很多有类似问题的人的答案。在这些答案的帮助下,我已经能够

c++ - 启动应用程序,在 C++ 中捕获标准输出和标准错误

如何启动应用程序并通过stdout或stderr捕获输出?我正在编写一个自动构建系统,我需要捕获输出以进行分析。我想更新svn存储库并获取修订号,这样我就可以在autobuild/revNumber/中移动文件(如果成功)。我还想使用make构建并将编译文本上传到我的服务器,以便每个人都能看到失败构建时的警告和错误。我找不到system()函数,但是我在MSDN上找到了CreateProcess()函数。我能够启动我需要的东西,但我不知道如何捕获stderr和stdout。我注意到该进程单独启动,除非我设置断点并让我的应用程序退出,然后它会将所有文本保留在我的应用程序控制台窗口中。我还

c++ - 使用字符数组写入标准输出(非空终止)c/c++

使用字符数组写入标准输出最直接的方法是什么?我想输出一个更大数组的切片,并且该切片不是空终止的。我想避免将切片复制到“正确的”以null结尾的C字符串。 最佳答案 有一个我一开始没有找到的非常明显的解决方案。std::cout是ostream的实例。voidWriteChunk(char*buffer,size_tstartpos,size_tlength){std::cout.write(buffer+startpos,length);}所以std::cout.write就可以了。 关

c++ - 如何对写入 stdout/std::cout 的函数进行单元测试

我正在研究单元测试。据我所知,几乎所有单元测试都使用返回值或输出参数作为其测试用例中的预期值。没有返回值或输出参数的函数的期望值是多少?例子:voidunit_test(){cout当然,这个功能很简单。所以,这个功能似乎不需要单元测试。但这只是一个示例。你认为unit_test函数有副作用吗?你会如何测试它? 最佳答案 如果您正在编写一个您知道应该测试的函数,那么您应该将其设计为在您的框架中可测试。在这里,如果您的测试是在您可以验证流程输出的流程级别完成的,那么写入std::cout就可以了。否则,您可能希望将输出流作为函数的参数

c++ - cout 不在 Qt Creator 中打印

我已经在这个论坛上看到了这个问题,但我不知道为什么建议的答案对我的情况不起作用。所以我尝试寻求其他解决方案。我刚刚让我的Qtcreator在Linux下运行。我不明白为什么我的:cout当qdebug打印时不在控制台打印qDebug()这是我的.pro文件中包含的内容:QT+=coreguiTARGET=aaaTEMPLATE=appSOURCES+=main.cpp\mainwindow.cpp\IeplcModule.cppHEADERS+=mainwindow.h\IeplcModule.hFORMS+=mainwindow.ui#enableconsoleCONFIG+=con

windows - 如何在 perl 中为反引号加载 STDIN(不写入临时文件)

我正在执行系统命令,并希望(1)为系统命令预加载STDIN和(2)从命令中捕获STDOUT。根据here我知道我可以做到这一点:open(SPLAT,"stuff")||die"can'topenstuff:$!";open(STDIN,"这使用当前定义的STDIN作为排序的STDIN。如果我将数据放在一个文件中,那很好,但我将它放在一个变量中。有没有办法在执行系统命令之前将变量的内容加载到STDIN中?像这样的东西:open(STDIN,"这可以不使用临时文件来完成吗?另外,我使用的是Windows,因此我听说不推荐使用Open2。谢谢。 最佳答案

windows - 具有不可重定向输出的实用程序 (Windows)

我正在使用Microsoft命令行实用程序来执行任务。我认为实用程序的具体细节及其执行的任务相对不重要。这是重要的:命令行实用程序将文本发送到控制台窗口。我无法弄清楚如何将此文本重定向到文件,尽管我已经尝试了通过研究可以找到的所有方法。该实用程序似乎使用了一些奇怪的操作系统函数调用,导致文本以不受正常重定向方式影响的方式打印。我正在使用Windows7cmd.exe控制台窗口。这些构造都没有重定向有问题的文本输出:util.exe>log.txtutil.exe2>err.txtutil.exe>log.txt2>&1util.exe1>log.txt2>err.txtutil.exe

c++ - 如何正确启动进程并转发 stdin/stdout/stderr?

我正在使用CreateProcess启动交互式脚本解释器,并希望透明地从/向解释器转发stdin/stdout/stderr。我的第一次尝试是设置传递给CreateProcess的STARTUPINFO结构STARTUPINFOAsi={sizeof(si)};si.hStdError=::GetStdHandle(STD_ERROR_HANDLE);si.hStdOutput=::GetStdHandle(STD_OUTPUT_HANDLE);si.hStdInput=::GetStdHandle(STD_INPUT_HANDLE);si.dwFlags|=STARTF_USESTD

python - "WindowsError: [Error 206] The filename or extension is too long"使用子进程多次运行程序后

我的python程序在WindowsHPC2008环境中准备输入、运行外部FORTRAN代码并处理输出。它工作得很好,除非代码在1042-1045次之间执行外部程序(通常问题会更早收敛)。在这些情况下,我得到一个异常(exception):WindowsError:[Error206]Thefilenameorextensionistoolong但是,文件名的路径不会随时间增长。它只是清理目录并再次运行。代码如下:inpF=open(inName)outF=open(localOutName,'w')p=subprocess.Popen(pathToExe,shell=False,st