2015-07-01 2 views
0

У меня есть QProcess * process, объявленный как член класса, и я выделил в конструкторе `process = new QProcess '. Теперь, когда пользователь нажимает кнопку, я запускаю процесс.Что произойдет, если я снова вызову QProcess :: start()?

void MainWindow::rsync() 
{ 
    process->start("rsync c:\\test\\sync1 [email protected]:/Test"); 

    // additionally what will happen if I do this 
    // process->start("ping [email protected]"); 
} 

Теперь синхронизация может занять до 30 секунд, что произойдет, если я снова нажму кнопку в течение этого времени? Что произойдет, если я снова нажму кнопку после завершения первой синхронизации? Можно ли снова вызвать метод start() объекта QProcess, который я выделил, или удалить его и перераспределить его?

Часть причины я прошу это первая start команда does't вполне работает (Rsync, кажется, заблокирован или не выводит никаких сообщений), но 2-й start() с ping командных работ, и я вижу выход в моем заявление.

+0

В стороне: вы можете просто иметь процесс QProcess как член класса, не нужно использовать явное управление памятью здесь. Вы сохраните одно распределение кучи таким образом, и у вас будет меньше проблем, о которых можно будет беспокоиться. Подумайте: 'class MainWindow {Q_OBJECT QProcess m_process; ...}; ' –

ответ

2

Из Qt документации:

Если объект QProcess уже запущен процесс, предупреждение может быть напечатан на консоли, и существующий процесс будет продолжать работать без изменений.

Смежные вопросы