我需要从QProcess运行以下语句:
programm < file1 > file2
在QT中:
QProcess *proc = new QProcess;
proc->setReadChannelMode(QProcess::SeparateChannels);
proc->start("program < \"file1\" > \"file2\"", QIODevice::ReadWrite);
但不知怎的,它不起作用。我在taskmanager中看到,该命令看起来正确,但似乎程序在没有任何参数的情况下执行。我的错误在哪里?
答案 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");