Пытаюсь использовать pty в Debian, 32-разрядном. Получаю дескриптор, но когда пытаюсь сбросить сигнал RTS, получаю от ioctl -1. Код приведён ниже:
include
include
include
ioctl.h>
include
include
include
int main(int argc, char* argv[]) {
int master,slave;
char slname[255];
struct termios termios_p;
termios_p.c_iflag &= ~(INPCK|IXON|IXOFF|ICRNL|INLCR|IGNBRK|BRKINT);
termios_p.c_oflag &= ~OPOST;
termios_p.c_cflag |= (CLOCAL|CREAD);
termios_p.c_cflag &= ~CSIZE;
termios_p.c_cflag |= (CS8);
termios_p.c_cflag &= ~(CSTOPB|PARENB);
termios_p.c_lflag |= IEXTEN;
termios_p.c_lflag &= ~(ISIG|ICANON|ECHO|ECHOE|ECHOK|ECHONL);
termios_p.c_cc[VMIN] = 1;
termios_p.c_cc[VTIME] = 0;
openpty(&master,&slave,slname,&termios_p,NULL);
if (master < 0)
printf("Open error!\n");
else {
int data = TIOCM_RTS;
int err = ioctl(master,TIOCMBIC,&data);
printf("RTS setting result err=%d\n",err);
}
return 0;
}
Что я делаю не так?
UPD. errno содержит EINVAL. Не пойму, вроде всё хорошо
UPD.2. Видимо, команда TIOCMGET/TIOCMBIC/TIOCMSET не работают в данной версии Linux. Вопрос - а как можно изменять состояние линий, например RTS/CTS?
https://ru-programming.livejournal.com/1366312.html