Получение значения терминала Linux из моего приложения - PullRequest
1 голос
/ 14 февраля 2012

Я занимаюсь разработкой приложения Qt в Linux.Я хотел передать команды Linux терминалу.Это сработало, но теперь я также хочу получить ответ от терминала для этой конкретной команды.

Например,

ls -a

Как вы знаете, эта команда перечисляет каталоги и файлы текущейрабочий каталог.Теперь я хочу передать возвращаемые значения из вызова ls в мое приложение.Как правильно это сделать?

Ответы [ 3 ]

3 голосов
/ 14 февраля 2012

QProcess - это класс qt, который позволит вам порождать процесс и читать результат.Есть пример использования для чтения результата команды на этой странице.

0 голосов
/ 15 февраля 2012

Синтаксический анализ ls(1) вывод опасен - создайте несколько файлов со смешными именами в каталоге и протестируйте его:

touch "one file"
touch "`printf "\x0a\x0a\x0ahello\x0a  world"`"

Это создает два файла в текущей рабочейкаталог.Я ожидаю, что ваши попытки разобрать ls(1) вывод не будут работать.Это может быть хорошо, если вы показываете результаты для человек (хотя человек будет очень запутан, если имя файла включает в себя вывод, который выглядит так же, как ls(1) вывод!), Но если вы пытаетесьчтобы представить что-то вроде explorer.exe или Finder.app представления файлов в файловой системе, это ужасно сломано .

Вместо этого используйте opendir(3), readdir(3) и closedir(3) читать записи каталога самостоятельно.Это будет более безопасным, более портативным и (в качестве дополнительной выгоды) немного более эффективным.

0 голосов
/ 14 февраля 2012

popen () , API системы Linux, верните FILE *, чтобы вы могли читать его как дескриптор файла ,, может помочь вам er er

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...