QT QProcess cmd & tptf
Я пытаюсь запустить оболочку Windows из моей программы qt и оттуда запустить команду tftp... Я немного документирую ', но я не понимаю, что не так. Прежде всего, я хочу сказать, что устройство, подключенное к моему компьютеру, правильно отвечает на простой вызов tftp. Итак, я точно знаю, что проблема все в этом куске кода
Пытался
Qprocess process;
process.start("tftp -i 192.168.2.1 get configINPUT.txt");
Без удачи
Я пытался
QProcess process;
QString program = "cmd.exe";
QStringList arguments = QStringList();
arguments<< "/C";
arguments<< "tftp";
arguments<< "-i";
arguments<< "192.168.2.1";
arguments<< "get";
arguments<< "configINPUT.txt";
bool ret= process.startDetached(program,arguments);
qDebug() << arguments;
qDebug() << ret;
Ret возвращает TRUE, но я не получил никаких файлов с устройства
Пытался вызвать tftp напрямую тоже с
QProcess process;
QString program = "tftp";
QStringList arguments = QStringList();
arguments<< "/C";
arguments<< "-i";
arguments<< "192.168.2.1";
arguments<< "get";
arguments<< "configINPUT.txt";
bool ret= process.startDetached(program,arguments);
qDebug() << arguments;
qDebug() << ret;
Теперь ret тоже FALSE, так что я думаю, что это неправильный способ сделать системный вызов. У кого-нибудь есть подсказка? большое спасибо
1 ответ
Это код, который я использую для вызова TFTP.exe с ошибкой. Я получаю ошибку enum val = QProcess::ProcessError(FailedToStart) Ошибка при использовании
QString program = "C:/Windows/System32/TFTP.exe"; or
QString program = "C:\Windows\System32\TFTP.exe"; or
QString program = "TFTP.exe"; or
QString program = "TFTP.";
{
void MainWindow::on_pushButton_Start_clicked(){
QString path = QDir::current().absolutePath();
QString program = "C:\\Windows\\System32\\TFTP.exe";
QStringList arguments = QStringList();
arguments<< "-i";
arguments<< "192.168.2.2";
arguments<< "get";
arguments<< "configINPUT.txt";
QProcess process;
connect(&process, &QProcess::errorOccurred, [=](QProcess::ProcessError error)
{
qDebug() << "error enum val = " << error << endl;
});
process.setProgram(program);
process.setArguments(arguments);
process.setWorkingDirectory(path);
process.start();
}