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();

}

Другие вопросы по тегам