Russian Qt Forum
Март 29, 2024, 08:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [решено] GUI и сеанс MS DOS или терминал Линух  (Прочитано 4492 раз)
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« : Октябрь 14, 2018, 14:59 »

Есть ли возможность запустить из GUI окно командной строки, передать туда скрипт на выполнение, поуправлять им, а потом закрыть?
« Последнее редактирование: Октябрь 22, 2018, 10:43 от Примерный ученик » Записан

Как мало времени и как много нужно узнать
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #1 : Октябрь 14, 2018, 22:53 »

QProcess не подходит?
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #2 : Октябрь 15, 2018, 09:50 »

Код:
            connect( proc, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(okSave()) );
            connect( proc, SIGNAL(readyReadStandardError()), this, SLOT(readError()) );
            connect( proc, SIGNAL(readyReadStandardOutput()), this, SLOT(readData()) );
            proc->setEnvironment(QProcess::systemEnvironment());
           proc->start("cmd.exe",QStringList() << "/C:" << appPath+"/db.bat");

Тут только мои сообщения, от процесса ничего, хотя он должен спросить пароль postgres
Есть только сигнал finished
Код:
09:46:06 Запуск процесса архивирования БД
09:46:06
09:46:06 "C:/Program Files/PostgreSQL/9.6/bin/pg_dump.exe" -c -U postgres -Ft -f S:/0new/SSI_admin/debug/ttt.tar ssi_p
09:46:06
09:46:06 Процесс может занять несколько минут...
09:46:09 Процесс завершен
« Последнее редактирование: Октябрь 15, 2018, 09:53 от Примерный ученик » Записан

Как мало времени и как много нужно узнать
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #3 : Октябрь 15, 2018, 11:41 »

Если под linux, то я делал так:
QProcess::startDetached("gnome-terminal", QStringList() << "-e" << QString("%1/%2 %3").arg(QApplication::applicationDirPath(), "my_script.sh", my_param));

Под венду наверно нужно вызвать cmd.exe, но я не разбирался как конкретно.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #4 : Октябрь 15, 2018, 12:25 »

Спасибо. С QProcess::startDetached окно появилось Смеющийся
и под виндой
Записан

Как мало времени и как много нужно узнать
GraninDm
Гость
« Ответ #5 : Октябрь 18, 2018, 18:01 »

Насколько я помню postgres пароль забирает не из stdin.
Это для безопасности сделано.
Если нужна автоматом подставить пароль то его лучше прописать в скрипт SET PGPASSWORD = 123456789

PGPASSWORD behaves the same as the password connection parameter. Use of this environment variable is not recommended for security reasons, as some operating systems allow non-root users to see process environment variables via ps; instead consider using the ~/.pgpass file (see Section 31.14).

PGPASSFILE specifies the name of the password file to use for lookups. If not set, it defaults to ~/.pgpass (see Section 31.14).
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #6 : Октябрь 21, 2018, 21:44 »

Такое решение не подходит из соображений безопасности.
Сейчас процесс запрашивает пароль и работает дальше.
Появилась другая проблема: если нет ошибок, то все отрабатывает и процесс завершается, архив создается.
Но при ошибках, процесс то же завершается без всяких сообщений и создания архива.
Есть ли возможность заставить процесс ждать его принудительного завершения?
Записан

Как мало времени и как много нужно узнать
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #7 : Октябрь 22, 2018, 10:40 »

Код:
proc->startDetached("cmd /K "+appPath+"/db.cmd");
параметр /K оставляет окно CMD активным до его закрытия пользователем.
Записан

Как мало времени и как много нужно узнать
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.