2013-06-26 3 views
1

Я попытался использовать QProcess для вызова исполняемого файла (Truecrypt, в данном случае) в Linux, но не нашел способа скрыть окно Truecrypt от всплытия.
Вызов Truecrypt через терминал в Ubuntu (даже после отправки пароля через командную строку) заставляет графический интерфейс Truecrypt появляться при установке тома и даже показана установленная папка.Предотвратить появление GUI при вызове в Linux?

Мне удалось избежать создания графического интерфейса в Windows, используя CreateProcess() в VC++ с CREATE_NO_WINDOW, но не может найти способ сделать это в Linux. Есть ли в Linux команда, через которую пользователь может вызывать внешний исполняемый файл с помощью кода на C++ и не позволяет исполняемому файлу показывать его графический интерфейс?

+0

Пожалуйста, объясните, как вы используете TrueCrypt через командную строку. В общем случае, если вы запретите приложение отображать графический интерфейс (например, отключив переменную окружения DISPLAY), приложение может решить, может ли работать без GUI. Однако большинство программ GUI не работают. – January

+0

Я пытаюсь вызвать исполняемый файл с помощью кода на C++. Пробовал с помощью 'QProcess', но, похоже, не существует способа скрыть окно исполняемого файла. Если есть способ, это то, что мне нужно знать. – Nav

ответ

0

Здесь есть две проблемы или вопросы. На вопрос о том, как не удается выполнить запуск GUI, можно легко ответить, но это не помогает с проблемой TrueCrypt.

По сути, есть два способа запретить приложение использовать графический интерфейс пользователя. Либо приложение имеет параметр конфигурации или командной строки, который делает именно это (например, параметр --headless для libreoffice), либо вы можете скрыть информацию об отображении из графического интерфейса.

Любой GUI в Linux должен знать, что такое дисплей, и эта информация предоставляется через переменную окружения $DISPLAY. Если эта переменная отключена или удалена, приложение не сможет отображать графический интерфейс. Большинство приложений с графическим интерфейсом будет не в состоянии:

~$ echo $DISPLAY 
:0 
~$ xterm 
~$ DISPLAY="" 
~$ xterm 
xterm: Xt error: Can't open display: 
xterm: DISPLAY is not set 

Я не могу ответить на вопрос о том TrueCrypt, однако беглый взгляд через trucrypt command line manual предполагает, что если вы предоставить достаточную информацию о командной строке, то TrueCrypt не должно быть запущен в интерактивном режиме ; однако, что интерактивное действие, по-видимому, является действием по умолчанию для некоторых команд.

+0

Спасибо. '$ DISPLAY' определенно не для меня. Я рассматривал возможность запуска исполняемого файла посредством внешнего вызова процесса через QT. Был надеется, что есть способ скрыть окно через QT. Даже если я поставлю необходимые параметры Truecrypt через командную строку, появится графический интерфейс. – Nav