QProcess从stdin和stdout开始

时间:2012-06-25 18:28:36

标签: qt stdout stdin qprocess

我需要从QProcess运行以下语句:

programm < file1 > file2
在QT中

QProcess *proc = new QProcess;
proc->setReadChannelMode(QProcess::SeparateChannels);
proc->start("program < \"file1\" > \"file2\"", QIODevice::ReadWrite);

但不知怎的,它不起作用。我在taskmanager中看到,该命令看起来正确,但似乎程序在没有任何参数的情况下执行。我的错误在哪里?

1 个答案:

答案 0 :(得分:6)

分别使用<读取和写入文件>是shell的语法功能。如果使用类似programm < file1 > file2的shell运行命令行sh,则仅执行命令program,根本不执行任何参数。将输入和输出的程序通道分配给给定文件与命令本身没有任何关系。

但可以通过使用以下方法告诉QProcess模拟此行为:

QProcess::setStandardInputFile(QString fileName) QProcess::setStandardOutputFile(QString fileName)

所以你的代码变成了:

QProcess *proc = new QProcess;
proc->setReadChannelMode(QProcess::SeparateChannels);
proc->setStandardInputFile("file1");
proc->setStandardOutputFile("file2");
proc->start("program");