получить размер терминала.

Модератор: Модераторы разделов

Аватара пользователя
Asgard
Сообщения: 215
Статус: North Valfader

получить размер терминала.

Сообщение Asgard »

есть ли способы получить размер терминала, не используя ioctl?
можно ли это сделать с помощью tcgetattr()?
заранее спасибо за помощь?
sator arepo tenet opera rotas ;)
------------------------------------------------------------
LJ
Спасибо сказали:
Аватара пользователя
krivakin
Сообщения: 117
ОС: Debian 4.0

Re: получить размер терминала.

Сообщение krivakin »

Можно использовать библиотеки: ncurses, ctio
Спасибо сказали:
Аватара пользователя
Asgard
Сообщения: 215
Статус: North Valfader

Re: получить размер терминала.

Сообщение Asgard »

ncurses не катит. слишком монструозная вещь для такой маленькой задачи. а про ctio поподробнее можно?
sator arepo tenet opera rotas ;)
------------------------------------------------------------
LJ
Спасибо сказали:
Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux

Re: получить размер терминала.

Сообщение polachok »

RESIZE(1) RESIZE(1)

NAME
resize - set TERMCAP and terminal settings to current xterm window size

поковырять код?
И немедленно выпил.
Спасибо сказали:
Аватара пользователя
Asgard
Сообщения: 215
Статус: North Valfader

Re: получить размер терминала.

Сообщение Asgard »

polachok
resize только устанавливает нужные env для xterm'a, а он уже получает информацию и в соответсвии с ней меняет размер. т.е. реализация лежит на нём. т.о. если ковырять сорцы, то имеенно xterm'a...

p/s
меня терзают смутные сомнения, что в xterm'e это реализовано как раз с помощью ioctl()...
sator arepo tenet opera rotas ;)
------------------------------------------------------------
LJ
Спасибо сказали:
Аватара пользователя
krivakin
Сообщения: 117
ОС: Debian 4.0

Re: получить размер терминала.

Сообщение krivakin »

Похоже по функциональности на ncurses но ИМХО намного пороще и есть вожможность работать с мышью.
Можешь почитать здесь и здесь.
Несмотри что там о редакторах просто найди там ссылку на этот пакет. В нем разобраться очень просто к тому же есть неплохие примеры.
Спасибо сказали:
Аватара пользователя
Asgard
Сообщения: 215
Статус: North Valfader

Re: получить размер терминала.

Сообщение Asgard »

Похоже по функциональности на ncurses но ИМХО намного пороще и есть вожможность работать с мышью.

я против ncurses ничего не имею, но мне на фиг не нужна вся её функциональность. мне просто нужно узнать размер терминала. пока я для этого использую ioctl().

Можешь почитать здесь и здесь.
Несмотри что там о редакторах просто найди там ссылку на этот пакет. В нем разобраться очень просто к тому же есть неплохие примеры.

спасибо за ссылки.
/* честно говоря смешнон подход автора. 'идеальный' тр == 'винодовый' тр. бугога */

там это делается тоже с помощью ioctl(). по ходу дела, другого способа, видимо, на данный момент не существует. а жаль...
sator arepo tenet opera rotas ;)
------------------------------------------------------------
LJ
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: получить размер терминала.

Сообщение flook »

Asgard писал(а):
12.03.2006 17:46
там это делается тоже с помощью ioctl(). по ходу дела, другого способа, видимо, на данный момент не существует. а жаль...

А чем ioctl плох?
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
vadiml
Сообщения: 446
ОС: fc12.x86_64

Re: получить размер терминала.

Сообщение vadiml »

а что мешает прочитать 2 переменных окружения?
COLUMNS и LINES называюся, а функция -
char * getenv("переменная");
phenom x4 905e, asus m4a79 deluxe, 4 gb, ati x550, ati 4350, 2 x 17" LCD
Спасибо сказали:
Аватара пользователя
Asgard
Сообщения: 215
Статус: North Valfader

Re: получить размер терминала.

Сообщение Asgard »

А чем ioctl плох?

ничем. тут уж виноваты, так сказать, 'мои тараканы'. дело в том, что написана либа для работы с псевдотерминалами, сейчас в ней 3 хедера - <termios.h>, <sys/ioctl.h> и библиотека для более информативного вывода сообщений об ошибках. вот мне и подумалось, что если сие можно реализовать спомощью tcgetattr(), то -1 хедер + более прозрачная структура. так что это вовсе не смертельно =)

а что мешает прочитать 2 переменных окружения?

в том, что я чертовски не люблю env. по мне, это очень скользкий механизм.
sator arepo tenet opera rotas ;)
------------------------------------------------------------
LJ
Спасибо сказали: