是否可以在程序运行时获得程序的输出';她在跑步吗? 如果我有一个用C++编写的Windows控制台程序,程序运行时是否有可能检索该程序的标准输出?如果不是,重写程序的最佳方式是什么?我知道我可以输出到文件,并不断检查这些文件的更新。还有别的办法吗?有更好的方法吗?
如果是现成的控制台可执行文件 您可以在如下文件中重定向它的输出:是否可以在程序运行时获得程序的输出';她在跑步吗? 如果我有一个用C++编写的Windows控制台程序,程序运行时是否有可能检索该程序的标准输出?如果不是,重写程序的最佳方式是什么?我知道我可以输出到文件,并不断检查这些文件的更新。还有别的办法吗?有更好的方法吗?,c++,windows,console,stdout,C++,Windows,Console,Stdout,如果是现成的控制台可执行文件 您可以在如下文件中重定向它的输出: SECURITY_ATTRIBUTES secattr = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE }; c:>回显一些文本>文件 或 c:>程序>文件 如果你是这个意思? 因为你的问题不太清楚 \\进入另一个程序 哦,好的 但我的第一个答案也已经习惯了。 因为还有另一种可能性,比如: c:>程序1 |程序2 它在控制台程序之间形成一个“管道” program2在其标准上接收progr
SECURITY_ATTRIBUTES secattr = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
c:>回显一些文本>文件
或
c:>程序>文件
如果你是这个意思?
因为你的问题不太清楚
\\进入另一个程序
哦,好的但我的第一个答案也已经习惯了。 因为还有另一种可能性,比如: c:>程序1 |程序2 它在控制台程序之间形成一个“管道”
program2在其标准上接收program1向标准输出的内容
它在控制台程序中常见的老式Unix方式实践。
这样就不需要重写程序来专门支持它。Code Project中有一些有趣的文章:
- (C#)
- (MFC/C++)
- (MFC/C++)
STARTF\u USESTDHANDLES
标志,oyu就需要提供所有三个
此外,句柄需要是可继承的(否则,子进程无法访问它们),因此SECURITY_属性基本上需要如下所示:
SECURITY_ATTRIBUTES secattr = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
您可以打开包含输入和接收输出的磁盘文件的句柄。或者,这可以是在console应用程序运行时增量读取/写入的数据。如果您只对程序的stdout感兴趣,则popen()使这一点非常简单:
FILE* program_output = popen("command line to start the other program");
//read from program_output as you would read a "normal" file
//...
pclose(program_output);
您很可能需要使用管道来实现这一点,因为您使用的是Windows,这里有一个指向的链接,其中有一个示例似乎完全符合您的要求。将其检索到何处?另一个程序或日志文件?另外的程序也是用C++编写的?但非特定语言的解决方案将是最好的。