UID:119418
UID:7394
dbzhang800:1. 不用 QProcess2. 用 QProcess 启动你要显示的终端(Ternimal)或命令行(cmd.exe),在终端或命令行中启动你的程序3. (2014-09-23 11:49)
foxgod:啥意思,没明白 (2014-09-23 11:57)
dbzhang800:好吧,当我没说。首先,所谓的控制台程序,就是在控制台下运行下的程序,这个没有疑问吧? ....... (2014-09-23 13:50)
dbzhang800:QProcess 有两种用法。一个是调用 start() 或 execute():此时被调用函数的标准输入、标准输出、标准出错 都已经被重定向到QProcess创建的相应的管道中。在这种情况下,即使你的控制台程序有自己的Console,那么它既不能接收任何输入,也不会输出任何内容。另一个用法是,star .. (2014-09-23 16:26)
dbzhang800:还是取决于你的设计,你要做什么。你是要那个Console窗口,让用于在里面操作。还是你需要启动cmd.exe程序,你的程序与之交互。 (2014-09-23 23:20)
foxgod:我现在用PROCESS,调用程序后,没有显示出来界面,当时我这个界面上有些log信息,我想把这个信息保存在一个日志里面,但是我可能调用了很多程序,每个log信息我想保存在不同日志里面,瑞然readAllStandardOutput()可以获得输出,但是如何把每个控制台输出信息,保存在不同的日志里面呢
dbzhang800:可能还是没理解你要做什么。感觉上,你这个需求完全不需要那个Console出来。或者你说说看,在控制台下下面,你如何实现将其保存在不同日志里面的?对一个控制台程序来说,和外界的交互无非是:命令行参数,标准输入,标准输出,标准出错,返回值,环境变量,工作目录 这几个东 .. (2014-09-24 10:52)
foxgod:for(int i = 0 ; i <m_MatrixName.size();i++){QProcess *process = new QProcess;connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(startReadOutput()));.......
dbzhang800:你这代码很不严谨,看不出你想表达的意思。另外,将当前进程所在目录 作为可执行程序启动? 内存泄露?....... (2014-09-24 14:50)
foxgod:那你觉得应该如何写?
dbzhang800:问题是,我现在不知道你要做什么 (2014-09-24 15:38)
foxgod:从XML,文件里面获取要启动的exe程序,然后启动这些程序, 这些程序都是用QT写的控制台程序,希望吧这些控制台的log保存在某个文件里面 (2014-09-24 15:57)
dbzhang800:多看看QProcess的Manual,这应该都是比较基本的操作。感觉上一个 QProcess::setStandardOutputFile() 可能就足够了。取决于你的设计,可以写出多种差异很大的Qt代码,来实现这任务。....... (2014-09-24 16:04)
foxgod:你给我的建议是NULL??,要么给个代码,要么给个思路,要么直接无视我的帖子.
dbzhang800:实在给不出来有意义的代码。因为到现在为止,不清楚你的具体要求是什么:包括一开始你要求的Console和你的log什么关系。你是同一个控制台程序执行多次还是多个控制台程序分别执行等等。思路的话,难道从从一开始我一直都在说不是思路?for (int i=0; i<1000; ++i) { & .. (2014-09-24 16:52)
foxgod:不知道是我的表达有问题,还是你的理解有问题,我不知道我那里说的不清楚了,我想做个守护程序,这个程序可以自动启动我用QT写的别的程序,这些程序是控制台程序,用PROCESS的SATart函数启动,是可以启动,但是不弹出界面,查看了VS的和QT的源码,一看QT就不让弹出界面,但是VS有个参数可以让弹出来,不弹出了就算了,但是我的控制程序里面有很多log信息,你不弹出来界面,我看不到信息,起码可以让我保存下来,我想做的就是我的守护程序,一次启动我写的不同的QT程序(这里至少有10个以上),每个程序里面打印的log信息,我想保存起来,你给的代码p->setStandardOutputFile(QStringLiteral("Out-%1.log").arg(i)); p.start("youConsole");这个是无法保存log信息的,你可以自己做实验。.......
dbzhang800:好吧,都怪我手贱。还真的用Qt4.8 和 Qt5.3 试了一下:#include <QCoreApplication>....... (2014-09-24 17:32)
UID:55197
UID:136309
UID:195010