⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tty.c

📁 该代码为unix环境高级编程的源代码
💻 C
字号:
#include	"lprps.h"#include	<fcntl.h>#include	<termios.h>static int		block_flag = 1;		/* default is blocking I/O */voidset_block(void)		/* turn off nonblocking flag */{					/* called only by block_write() below */	int		val;	if (block_flag == 0) {		if ( (val = fcntl(psfd, F_GETFL, 0)) < 0)			log_sys("set_block: fcntl F_GETFL error");		val &= ~O_NONBLOCK;		if (fcntl(psfd, F_SETFL, val) < 0)			log_sys("set_block: fcntl F_SETFL error");		block_flag = 1;	}}voidset_nonblock(void)	/* set descriptor nonblocking */{	int		val;	if (block_flag) {		if ( (val = fcntl(psfd, F_GETFL, 0)) < 0)			log_sys("set_nonblock: fcntl F_GETFL error");		val |= O_NONBLOCK;		if (fcntl(psfd, F_SETFL, val) < 0)			log_sys("set_nonblock: fcntl F_SETFL error");		block_flag = 0;	}}voidblock_write(const char *buf, int n){	set_block();	if (write(psfd, buf, n) != n)		log_sys("block_write: write error");}voidtty_flush(void)		/* flush (empty) tty input and output queues */{	if (tcflush(psfd, TCIOFLUSH) < 0)		log_sys("tty_flush: tcflush error");}voidtty_open(void){	struct termios	term;	if ( (psfd = open(DEF_DEVICE, O_RDWR)) < 0)		log_sys("tty_open: open error");	if (tcgetattr(psfd, &term) < 0)		/* fetch attributes */		log_sys("tty_open: tcgetattr error");	term.c_cflag  = CS8 |			/* 8-bit data */					CREAD |			/* enable receiver */					CLOCAL;			/* ignore modem status lines */									/* no parity, 1 stop bit */	term.c_oflag &= ~OPOST;			/* turn off post processing */	term.c_iflag  = IXON | IXOFF |	/* Xon/Xoff flow control */					IGNBRK |		/* ignore breaks */					ISTRIP |		/* strip input to 7 bits */					IGNCR;			/* ignore received CR */	term.c_lflag  = 0;		/* everything off in local flag:							   disables canonical mode, disables							   signal generation, disables echo */	term.c_cc[VMIN]  = 1;	/* 1 byte at a time, no timer */	term.c_cc[VTIME] = 0;	cfsetispeed(&term, DEF_BAUD);	cfsetospeed(&term, DEF_BAUD);	if (tcsetattr(psfd, TCSANOW, &term) < 0)	/* set attributes */		log_sys("tty_open: tcsetattr error");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -