4

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

programm < file1 > file2

在 QT 中:

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

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

4

1 回答 1

8

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

但是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");
于 2012-06-25T19:18:02.543 回答