我可以访问一个“好东西”的第三方库。 它将状态和进度消息发布到标准输出。 在控制台应用程序中,我可以看到这些消息就好了。 在一个Windows应用程序中,他们只是去了一点桶。 有没有一个相当简单的方法来redirect标准输出和标准错误到文本控件或其他可见的地方。 理想情况下,这不需要重新编译第三方代码。 它只是在低级别拦截蒸汽。 我想要一个解决scheme,我只是#包括头,调用初始化函数,并链接库在… #include "redirectStdFiles.h" void function(args…) { TextControl* text = new TextControl(args…); initializeRedirectLibrary(text, …); printf("Message that will show up in the TextControl\n"); std::cout << "Another message that also shows up in TextControl\n"; } 更好的是,如果它使用了一些我可以重写的接口,所以它不会绑定到任何特定的GUI库。 class StdFilesRedirector { public: writeStdout(std::string const& message) = 0; writeStderr(std::string const& errorMessage) = 0; readStdin(std::string […]
如何将stderr和stdoutredirect到一个Ruby脚本文件?
基本上我想和这个人做的相反…嘿嘿。 Python脚本:每次打印新行到shell而不是更新现有行 我有一个程序,告诉我有多远。 for i in some_list: #do a bunch of stuff. print i/len(some_list)*100," percent complete" 所以如果len(some_list)是50,那么我会把最后一行打印50次。 我想打印一行,并不断更新该行。 我知道我知道这可能是你整天读的最蹩脚的问题。 我只是无法弄清楚我需要放进谷歌的四个词来得到答案。 更新! 我尝试了这个build议,这是正确的。 新的代码 print percent_complete," \r", 完成百分比只是一个string(我是第一次抽象,现在我试图成为文字)。 现在的结果是它运行程序,不打印任何东西,直到程序结束后,然后打印“100%完成”在一条,只有一行。 没有回车(但用逗号,半数的build议),它不打印任何东西,直到最后。 然后打印: 0 percent complete 2 percent complete 3 percent complete 4 percent complete 等等。 所以现在新的问题是用逗号直到程序结束才打印。 随着回车,没有逗号它performance完全相同,都没有。
我希望能够在命令行上以简单的PHP脚本显示进度表。 而不是看到 Progress: 0% Progress: 1% etc… 我想只是数字改变,并取代以前的数字,就像git克隆做的例子Resolving deltas: 100% (8522/8522), done. 。 在search这个时,我发现在Perl中回答的问题是完美的,但是我无法在PHP中find它。 可能吗? 如果没有,我会诉诸C. 谢谢 更新:如果任何人对C ++版本感兴趣, 就在这里 。
有没有办法运行没有输出缓冲的shell命令? 例如, hexdump file | ./my_script hexdump file | ./my_script只会将缓冲块中的input从hexdump传递给my_script,而不是逐行传递。 其实我想知道一个通用的解决scheme如何使任何命令无缓冲?
我需要使用subprocess.Popen启动一些长时间运行的进程,并希望从每个自动pipe道的stdout和stderr单独的日志文件。 每个进程将同时运行几分钟,并且我希望每个进程有两个日志文件( stdout和stderr )在进程运行时写入。 为了更新每个日志文件,是否需要在循环中的每个进程上不断调用p.communicate() ,还是有一些方法来调用原始Popen命令,以便stdout和stderr自动stream式传输以打开文件句柄?
我有一个STDERR输出的程序,我想检查和运行grep等。 所以我可以redirect到STDOUT并使用grep,但问题是,我不想要原始的STDOUT内容。 所以,这一个不会做 cmd 2>&1 | grep pattern 因为它会混合原始的STDOUT和STDERR。 而这一个不起作用,因为grep不读取STDERR输出: cmd 1>/dev/null | grep pattern 但是,这个也不行: cmd 1>/dev/null 2>&1 | grep pattern 因为输出将是完全空的,因为所有东西都写到/dev/null 。 但是一定要有一个简单的方法来做到这一点?
有没有办法使用std::cout打印时alignment文本? 我正在使用标签,但是当文字太大,他们将不会alignment了。 Sales Report for September 15, 2010 Artist Title Price Genre Disc Sale Tax Cash Merle Blue 12.99 Country 4% 12.47 1.01 13.48 Richard Music 8.49 Classical 8% 7.81 0.66 8.47 Paula Shut 8.49 Classical 8% 7.81 0.72 8.49
我很困惑这三个文件的目的。 如果我的理解是正确的, stdin是程序写入其请求中运行进程中的任务的文件。 stdout是内核写入其输出的文件,并且请求它访问来自stderr的信息, stderr是input所有exception的文件。 在打开这些文件来检查这些文件是否真的发生了,我发现似乎没有任何提示! 我想知道的是这些文件的目的究竟是什么,绝对愚蠢的回答用很less的科技术语!
我有一个PowerShell脚本,我想将输出redirect到一个文件。 问题是我不能改变这个脚本被调用的方式。 所以我做不到: .\MyScript.ps1 > output.txt 如何在执行期间redirectPowerShell脚本的输出?