Запуск терминала и передача в него скрипта из QT

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

galaxyblazer
Сообщения: 4

Запуск терминала и передача в него скрипта из QT

Сообщение galaxyblazer »

Нужно из кют запустить скрипт в терминале.
сам скрипт выглядит вот так:
Код:

Код: Выделить всё

#!/bin/bash
valgrind --leak-check=full --leak-resolution=med ./myProg && read L


я пытался запускать его и так:

Код: Выделить всё

arg<<"-e" << "valgrind" << "--leak-check=full --leak-resolution=med ./myProg";
proc.startDatached("gnome-terminal", arg);


и так:

Код: Выделить всё

QProcess myProc;
myProc.startDetached("gnome-terminal -e ./1.sh");

1.sh держал в себе код выше упомянутого скрипта и был исполняемым .

и в результате терминал запускался , но без команды , а в кют в выводе приложения вылетала ошибка gnome-terminal:2609): Vte-2.90-WARNING **: Не удалось преобразовать символы из набора текущая в набор X-VTE-GUNICHAR.
Unhandled value type TerminalEncoding of pspec encoding (это для первого варианта запуска)
для второго,. где вызывался исполняемый файл , терминал запускался но с красным полем где было написано:
Произошла ошибка при создании дочернего процесса для этого терминала.
Не удалось выполнить процесс-потомок «./1.sh» (Отказано в доступе)
ну и было две кнопки : "Перезапустить " и "Параметры профиля".

В чем проблема? Что я не так делаю? Или тут надо в .pro файл что-то дописать или я уже не знаю что ???
Но еще есть одна инстерестная вещь :
когда я делал вот так:


Код: Выделить всё

QProcess myProc;
myProc.startDetached("gnome-terminal --help-all");


вся инфа хэлпа вывелась не в терминале а в окне "Вывод приложения" кют.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Запуск терминала и передача в него скрипта из QT

Сообщение NickLion »

1. startDetached — статический метод, не нужно создавать объект, достаточно:
QProcess:startDetached(...);
2. Заменил gnome-terminal на konsole (первого нет у меня), и команду на sleep — всё работает.
3. Список аргументов неверно сформировали:
arg << "-e" << "valgrind" << "--leak-check=full" << "--leak-resolution=med" << "./myProg";

UPD:
запускаю так:

Код: Выделить всё

    QStringList arg;
    arg << "--hold" << "-e" << "valgrind" << "--leak-check=full" << "--leak-resolution=med" << "./myProg";
    QProcess::startDetached("konsole", arg);

Получаю:

Код: Выделить всё

valgrind: ./myProg: No such file or directory
Спасибо сказали:
galaxyblazer
Сообщения: 4

Re: Запуск терминала и передача в него скрипта из QT

Сообщение galaxyblazer »

NickLion писал(а):
08.05.2013 18:44
1. startDetached — статический метод, не нужно создавать объект, достаточно:
QProcess:startDetached(...);
2. Заменил gnome-terminal на konsole (первого нет у меня), и команду на sleep — всё работает.
3. Список аргументов неверно сформировали:
arg << "-e" << "valgrind" << "--leak-check=full" << "--leak-resolution=med" << "./myProg";

UPD:
запускаю так:

Код: Выделить всё

    QStringList arg;
    arg << "--hold" << "-e" << "valgrind" << "--leak-check=full" << "--leak-resolution=med" << "./myProg";
    QProcess::startDetached("konsole", arg);

Получаю:

Код: Выделить всё

valgrind: ./myProg: No such file or directory


попробовал ваш вариант запустить , только не на konsole а gnome-terminal, вылетали прежние проблемы. Взбесился и чисто ради интереса поставил konsole от КДЕ , все заработало..... вот теперь вот думаю, то ли это гном такой долбанутий, то ли у меня руки из Ж***))
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Запуск терминала и передача в него скрипта из QT

Сообщение NickLion »

А для способа с файлом 1.sh задавали права на зпуск? chmod +x 1.sh?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5456
ОС: Gentoo

Re: Запуск терминала и передача в него скрипта из QT

Сообщение /dev/random »

galaxyblazer писал(а):
09.05.2013 09:27
попробовал ваш вариант запустить , только не на konsole а gnome-terminal, вылетали прежние проблемы. Взбесился и чисто ради интереса поставил konsole от КДЕ , все заработало..... вот теперь вот думаю, то ли это гном такой долбанутий, то ли у меня руки из Ж***))

А если -x вместо -e? Или как там его, вылетело из головы. Посмотрите, в общем, в мане, что там за аналог -e, принимающий строку не одним аргументом, а несколькими. Я не уверен, что это -x, а gnome-terminal сейчас не установлен.
Спасибо сказали:
galaxyblazer
Сообщения: 4

Re: Запуск терминала и передача в него скрипта из QT

Сообщение galaxyblazer »

/dev/random писал(а):
09.05.2013 12:58
galaxyblazer писал(а):
09.05.2013 09:27
попробовал ваш вариант запустить , только не на konsole а gnome-terminal, вылетали прежние проблемы. Взбесился и чисто ради интереса поставил konsole от КДЕ , все заработало..... вот теперь вот думаю, то ли это гном такой долбанутий, то ли у меня руки из Ж***))

А если -x вместо -e? Или как там его, вылетело из головы. Посмотрите, в общем, в мане, что там за аналог -e, принимающий строку не одним аргументом, а несколькими. Я не уверен, что это -x, а gnome-terminal сейчас не установлен.

там в хелпе тоже -е пишет, -х я пробова, ничего не дало, еще больше ошибок было. Короче плевать, всеравно на OpenSuse проверять будут, а там ведб КДЕ и консоль а не терминал. Поэтому спасибо за помощь.

NickLion писал(а):
09.05.2013 12:42
А для способа с файлом 1.sh задавали права на зпуск? chmod +x 1.sh?

да задавал
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5456
ОС: Gentoo

Re: Запуск терминала и передача в него скрипта из QT

Сообщение /dev/random »

galaxyblazer писал(а):
09.05.2013 14:53
там в хелпе тоже -е пишет, -х я пробова, ничего не дало, еще больше ошибок было.

Надеюсь, не с первоначальным вашим вариантом пробовали?
Обратите внимание, что вначале вы пытались вызывать так:
"valgrind" "--leak-check=full --leak-resolution=med ./myProg"
А нужно либо так:
"valgrind --leak-check=full --leak-resolution=med ./myProg"
(если команда ожидается одним аргументом),
либо так:
"valgrind" "--leak-check=full" "--leak-resolution=med" "./myProg"
(если несколькими).

Т.е. -e на -x нужно заменять не в вашем первоначальном варианте, а в варианте NickLion'а, из пункта 3 в его сообщении.
Спасибо сказали:
galaxyblazer
Сообщения: 4

Re: Запуск терминала и передача в него скрипта из QT

Сообщение galaxyblazer »

/dev/random писал(а):
09.05.2013 16:12
galaxyblazer писал(а):
09.05.2013 14:53
там в хелпе тоже -е пишет, -х я пробова, ничего не дало, еще больше ошибок было.

Надеюсь, не с первоначальным вашим вариантом пробовали?
Обратите внимание, что вначале вы пытались вызывать так:
"valgrind" "--leak-check=full --leak-resolution=med ./myProg"
А нужно либо так:
"valgrind --leak-check=full --leak-resolution=med ./myProg"
(если команда ожидается одним аргументом),
либо так:
"valgrind" "--leak-check=full" "--leak-resolution=med" "./myProg"
(если несколькими).

Т.е. -e на -x нужно заменять не в вашем первоначальном варианте, а в варианте NickLion'а, из пункта 3 в его сообщении.

так я так и менял, тоисть менял -е на -х в варианте который предоставил NickLion'а. Вылетела ошибка мол --leak-resolution=med - неизвестная команда. Ну и когда под одни скобки кидал "--leak-resolution=med./myProg" тоже материлось. А вообще я много как пробовал. Основная ошибка была: (gnome-terminal:2609): Vte-2.90-WARNING **: Не удалось преобразовать символы из набора текущая в набор X-VTE-GUNICHAR.
Unhandled value type TerminalEncoding of pspec encoding
Спасибо сказали: