есть ли способы получить размер терминала, не используя ioctl?
можно ли это сделать с помощью tcgetattr()?
заранее спасибо за помощь?
получить размер терминала.
Модератор: Модераторы разделов
-
- Сообщения: 215
- Статус: North Valfader
-
- Сообщения: 117
- ОС: Debian 4.0
Re: получить размер терминала.
Можно использовать библиотеки: ncurses, ctio
-
- Сообщения: 215
- Статус: North Valfader
Re: получить размер терминала.
ncurses не катит. слишком монструозная вещь для такой маленькой задачи. а про ctio поподробнее можно?
-
- Бывший модератор
- Сообщения: 2199
- Статус: главный форумный маргинал
- ОС: gnu/linux
Re: получить размер терминала.
RESIZE(1) RESIZE(1)
NAME
resize - set TERMCAP and terminal settings to current xterm window size
поковырять код?
И немедленно выпил.
-
- Сообщения: 215
- Статус: North Valfader
Re: получить размер терминала.
polachok
resize только устанавливает нужные env для xterm'a, а он уже получает информацию и в соответсвии с ней меняет размер. т.е. реализация лежит на нём. т.о. если ковырять сорцы, то имеенно xterm'a...
p/s
меня терзают смутные сомнения, что в xterm'e это реализовано как раз с помощью ioctl()...
resize только устанавливает нужные env для xterm'a, а он уже получает информацию и в соответсвии с ней меняет размер. т.е. реализация лежит на нём. т.о. если ковырять сорцы, то имеенно xterm'a...
p/s
меня терзают смутные сомнения, что в xterm'e это реализовано как раз с помощью ioctl()...
-
- Сообщения: 117
- ОС: Debian 4.0
-
- Сообщения: 215
- Статус: North Valfader
Re: получить размер терминала.
Похоже по функциональности на ncurses но ИМХО намного пороще и есть вожможность работать с мышью.
я против ncurses ничего не имею, но мне на фиг не нужна вся её функциональность. мне просто нужно узнать размер терминала. пока я для этого использую ioctl().
Можешь почитать здесь и здесь.
Несмотри что там о редакторах просто найди там ссылку на этот пакет. В нем разобраться очень просто к тому же есть неплохие примеры.
спасибо за ссылки.
/* честно говоря смешнон подход автора. 'идеальный' тр == 'винодовый' тр. бугога */
там это делается тоже с помощью ioctl(). по ходу дела, другого способа, видимо, на данный момент не существует. а жаль...
-
- Сообщения: 585
- Статус: Просто flook
Re: получить размер терминала.
А чем ioctl плох?
В каждом из нас спит гений... и с каждым днем все крепче...
-
- Сообщения: 446
- ОС: fc12.x86_64
Re: получить размер терминала.
а что мешает прочитать 2 переменных окружения?
COLUMNS и LINES называюся, а функция -
char * getenv("переменная");
COLUMNS и LINES называюся, а функция -
char * getenv("переменная");
phenom x4 905e, asus m4a79 deluxe, 4 gb, ati x550, ati 4350, 2 x 17" LCD
-
- Сообщения: 215
- Статус: North Valfader
Re: получить размер терминала.
А чем ioctl плох?
ничем. тут уж виноваты, так сказать, 'мои тараканы'. дело в том, что написана либа для работы с псевдотерминалами, сейчас в ней 3 хедера - <termios.h>, <sys/ioctl.h> и библиотека для более информативного вывода сообщений об ошибках. вот мне и подумалось, что если сие можно реализовать спомощью tcgetattr(), то -1 хедер + более прозрачная структура. так что это вовсе не смертельно =)
а что мешает прочитать 2 переменных окружения?
в том, что я чертовски не люблю env. по мне, это очень скользкий механизм.