seriova konzola bezi len 80x25
Patrik Ostrihon
pa3k na pa3k.sk
Středa Květen 14 21:57:51 CEST 2003
Dňa St, 2003-05-14 at 21:34, Pavel Kankovsky napísal:
> On 14 May 2003, Patrik Ostrihon wrote:
>
> > Ked v xterme zmenite velkost, on o tom da vediet ovladacu
> > pseudoterminalu a ten si nastavy novy rozmer. Nasledne aplikacia xterm
> > zasle signal SIGWINCH vsetkym procesom, ktore maju otvoreny dany
> > pseudoterminal. [...]
>
> To neposila primo xterm, to posle jaderny ovladac pseudoterminalu pote,
> co xterm (nebo kdokoli jiny) nastavi velikost velikost pomoci ioctl
> TIOCSWINSZ.
Tak ste ma donutili pozriet sa na to :).
Takze naozaj v linuxe to posle ovladac presudoterminalu:
drivers/char/tty_io.c
static int tiocswinsz(struct tty_struct *tty, struct tty_struct
*real_tty,
struct winsize * arg)
{
struct winsize tmp_ws;
if (copy_from_user(&tmp_ws, arg, sizeof(*arg)))
return -EFAULT;
if (!memcmp(&tmp_ws, &tty->winsize, sizeof(*arg)))
return 0;
if (tty->pgrp > 0)
kill_pg(tty->pgrp, SIGWINCH, 1);
if ((real_tty->pgrp != tty->pgrp) && (real_tty->pgrp > 0))
kill_pg(real_tty->pgrp, SIGWINCH, 1);
tty->winsize = tmp_ws;
real_tty->winsize = tmp_ws;
return 0;
}
Ale :) niektore ine unix platformi to nevedia takze to vie poslat aj
xterm :)
#if defined(TIOCSSIZE) && (defined(sun) && !defined(SVR4))
/* Set tty's idea of window size */
ts.ts_lines = rows;
ts.ts_cols = cols;
code = ioctl(screen->respond, TIOCSSIZE, &ts);
TRACE(("return %d from TIOCSSIZE %dx%d\n", code, rows, cols));
#ifdef SIGWINCH
if (screen->pid > 1) {
int pgrp;
if (ioctl(screen->respond, TIOCGPGRP, &pgrp) != -1)
kill_process_group(pgrp, SIGWINCH);
}
#endif /* SIGWINCH */
Ale mali ste pravdu, hold aj majster tesar sa utne :).
--
Patrik Ostrihon
Technicky riaditel
ProWeb Consulting, a.s.
Werferova 1, 040 11 Kosice
Tel./fax: 055 / 7898 401
Navstivte nas na: www.pwc.sk
Další informace o konferenci Linux