Документация
ОС Аврора 5.0.1

Класс Console

Публичные типы

enum ChannelMode { Read , ReadWrite }
enum TerminalMode { Default , Interactive }
enum Type { Tty , Stdio }

Публичные функции

QByteArray bytesLeftToRead ()
QByteArray bytesLeftToWrite ()
ChannelMode channelMode () const
Console (Type type, ChannelMode cmode, TerminalMode tmode, QObject *parent=nullptr)
void release ()
TerminalMode terminalMode () const
Type type () const

Статические публичные функции

static bool isStdinRedirected ()
static bool isStdoutRedirected ()
static Console * stdioInstance ()
static Console * ttyInstance ()

Дружественные функции и классы

class ConsolePrivate
class ConsoleReference

Подробное описание

Консольная система QCA.

QCA предоставляет API для асинхронного доступа на основе событий к консоли и stdin/stdout, так как в противном случае эти средства нельзя переносить. Основное предназначение этой системы в QCA — запрос кодовой фразы в приложениях командной строки с использованием консоли tty.

Как это работает: создаётся объект Console для желаемого типа консоли, а затем используется ConsoleReference для работы с консолью. Только одна ConsoleReference может работать с консолью одновременно.

Объект Console занимает либо физическую консоль (тип Console::Tty), либо stdin/stdout (тип Console::Stdio). Одновременно можно создавать только по одному экземпляру каждого типа.

Всякий раз, когда пишется код, которому требуется объект tty или stdio, код должен сначала вызвать один из статических методов (ttyInstance() или stdioInstance()), чтобы узнать, существует ли уже консольный объект для желаемого типа. Если объект существует, следует использовать его. Если он не существует, то правило гласит, что соответствующий код должен создать объект, использовать его, а затем уничтожить объект после завершения операции.

Следуя приведенному выше правилу, следует написать код, использующий консоль, без необходимости создавать какой-либо объект главной консоли. Конечно, если приложение создало консоль, то она будет использоваться.

Причина, по которой существует объект главной консоли, заключается в том, что не гарантируется, что все операции ввода-вывода сохранятся после создания и уничтожения объекта консоли. Если используется тип Stdio, то вероятно, будет полезен долгоживущий консольный объект. Можно захватить необработанный ввод-вывод, вызвав bytesLeftToRead или bytesLeftToWrite. Однако не ожидается, что общий код, требующий консоли, вызовет эти функции при использовании временной консоли. Таким образом, разработчику приложения потребуется создать свой собственный объект консоли, вызвать код, использующий консоль, а затем при необходимости выполнить собственное извлечение необработанного ввода-вывода. Еще одна причина для извлечения необработанного ввода-вывода — это наличие необходимости переключиться с консоли обратно на стандартные функции (например, fgets()).

Описание перечислений

Type

enum QCA::Console::Type

Тип объекта консоли.

Tty Физическая консоль
Stdio stdin/stdout

ChannelMode

enum QCA::Console::ChannelMode

Тип ввода-вывода для использования с объектом консоли.

Read Только для чтения (эквивалент стандартного ввода)
ReadWrite Чтение/запись (эквивалентно stdin и stdout)

TerminalMode

enum QCA::Console::TerminalMode

Режим работы консоли.

Default Использовать настройки терминала по умолчанию
Interactive Посимвольный ввод, без вывода текста

Описание конструкторов и деструктора

Console()

QCA::Console::Console (Type type, ChannelMode cmode, TerminalMode tmode, QObject * parent = nullptr)

Стандартный конструктор.

Следует обратить внимание, что код библиотеки не должен создавать новый объект Console, не проверив, существует ли уже объект Console требуемого типа. Обоснование этого можно найти в основной документации класса Console.

Параметры

type Тип создаваемого объекта Console
cmode ChannelMode (тип ввода-вывода) для использования
tmode TerminalMode для использования
parent Родительский объект для этого экземпляра

См. также ttyInstance() и stdioInstance для статических методов, которые позволяют проверить, существует ли уже объект Console с требуемым Type, и, если существует, возвращается ссылка на этот объект.

Описание методов

type()

Type QCA::Console::type () const

Тип этого объекта Console.

channelMode()

ChannelMode QCA::Console::channelMode () const

ChannelMode этого объекта Console.

terminalMode()

TerminalMode QCA::Console::terminalMode () const

TerminalMode этого объекта Console.

isStdinRedirected()

static bool QCA::Console::isStdinRedirected () static

Проверяет, перенаправляется ли стандартный ввод.

См. также type() и channelMode()

isStdoutRedirected()

static bool QCA::Console::isStdoutRedirected () static

Проверяет, перенаправляется ли стандартный вывод.

См. также type() и channelMode()

ttyInstance()

static Console* QCA::Console::ttyInstance () static

Текущий консольный объект терминального типа.

Возвращает null, если нет текущего объекта Console этого типа, в противном случае объект Console для использования.

stdioInstance()

static Console* QCA::Console::stdioInstance () static

Текущий консольный объект типа stdio.

Возвращает null, если нет текущего объекта Console этого типа, в противном случае объект Console для использования.

release()

void QCA::Console::release ()

Выпускает Console.

Метод позволяет получить доступ к памяти, содержащей любые оставшиеся данные.

bytesLeftToRead()

QByteArray QCA::Console::bytesLeftToRead ()

Возвращает оставшиеся данные из Console после операции чтения.

bytesLeftToWrite()

QByteArray QCA::Console::bytesLeftToWrite ()

Возвращает оставшиеся данные из Console после операции записи.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.