Предотвратить отображение GUI при вызове в Linux?

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

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

1

Решение

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

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

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]