cfgetispeed() — Determine the input baud rate
Standards
Standards / Extensions | C or C++ | Dependencies |
---|---|---|
POSIX.1 |
both |
Format
#define _POSIX_SOURCE
#include <termios.h>
speed_t cfgetispeed(const struct termios *termptr);
General description
Extracts the input baud rate from the termios structure indicated by *termptr. The termios structure contains information about a terminal. A program should first use tcgetattr() to get the termios structure, and then use cfgetispeed() to extract the speed from the structure. The program can then use cfgetispeed() to set a new baud rate in the structure and tcsetattr() to pass the changed value to the system.
Although in a z/OS® UNIX application valid speeds can be set with cfsetispeed() and passed to the system with tcsetattr(), the speed has no effect on the operation of a pseudoterminal. However, the operation will have an effect if issued for an OCS remote terminal.
Returned value
cfgetispeed() returns a code indicating the baud rate; see Table 1. These codes are defined in the termios.h header file and have an unsigned integer type.
There are no documented errno values.
B0 | Hang up |
---|---|
B50 | 50 baud |
B75 | 75 baud |
B110 | 110 baud |
B134 | 134.5 baud |
B150 | 150 baud |
B200 | 200 baud |
B300 | 300 baud |
B600 | 600 baud |
B1200 | 1200 baud |
B1800 | 1800 baud |
B2400 | 2400 baud |
B4800 | 4800 baud |
B9600 | 9600 baud |
B19200 | 19,200 baud |
B38400 | 38,400 baud |
Example
/* CELEBC05
This example determines the speed of stdin.
*/
#define _POSIX_SOURCE
#include <termios.h>
#include <stdio.h>
char *see_speed(speed_t speed) {
static char SPEED[20];
switch (speed) {
case B0: strcpy(SPEED, "B0");
break;
case B50: strcpy(SPEED, "B50");
break;
case B75: strcpy(SPEED, "B75");
break;
case B110: strcpy(SPEED, "B110");
break;
case B134: strcpy(SPEED, "B134");
break;
case B150: strcpy(SPEED, "B150");
break;
case B200: strcpy(SPEED, "B200");
break;
case B300: strcpy(SPEED, "B300");
break;
case B600: strcpy(SPEED, "B600");
break;
case B1200: strcpy(SPEED, "B1200");
break;
case B1800: strcpy(SPEED, "B1800");
break;
case B2400: strcpy(SPEED, "B2400");
break;
case B4800: strcpy(SPEED, "B4800");
break;
case B9600: strcpy(SPEED, "B9600");
break;
case B19200: strcpy(SPEED, "B19200");
break;
case B38400: strcpy(SPEED, "B38400");
break;
default: sprintf(SPEED, "unknown (%d)", (int) speed);
}
return SPEED;
}
main() {
struct termios term;
speed_t speed;
if (tcgetattr(0, &term) != 0)
perror("tcgetattr() error");
else {
speed = cfgetispeed(&term);
printf("cfgetispeed() says the speed of stdin is %s\n",
see_speed(speed));
}
}
cfgetispeed() says the speed of stdin is B0