Terminal control/Dimensions: Difference between revisions

Add C using TIOCGWINSZ.
(Add C using TIOCGWINSZ.)
Line 2:
Determine the height and width of the terminal, and store this information into variables for subsequent use.
[[Terminal Control::task| ]]
 
=={{header|C}}==
C provides no standard way to find the size of a terminal.
 
Some devices can do NAWS (Negotiate About Window Size). A terminal emulator like xterm(1) should set the size. A network server like sshd(1) should copy the size from its client. Other devices, such as plain serial ports, might not know the window size.
 
[[BSD]] systems (and some other [[Unix]] clones) have TIOCGWINSZ. This ioctl(2) call gets the "window size" of a tty(4) device.
 
{{libheader|BSD libc}}
{{works with|OpenBSD|4.9}}
<lang c>#include <sys/ioctl.h> /* ioctl, TIOCGWINSZ */
#include <err.h> /* err */
#include <fcntl.h> /* open */
#include <stdio.h> /* printf */
#include <unistd.h> /* close */
 
int
main()
{
struct winsize ws;
int fd;
 
/* Open the controlling terminal. */
fd = open("/dev/tty", O_RDWR);
if (fd < 0)
err(1, "/dev/tty");
 
/* Get window size of terminal. */
if (ioctl(fd, TIOCGWINSZ, &ws) < 0)
err(1, "/dev/tty");
 
printf("%d rows by %d columns\n", ws.ws_row, ws.ws_col);
printf("(%d by %d pixels)\n", ws.ws_xpixel, ws.ws_ypixel);
 
close(fd);
return 0;
}</lang>
 
=={{header|Euphoria}}==
Anonymous user