tty linux 打开和设置范例
http://bbs.csdn.net/topics/340184140
/************************************************************************************ * tty_open_port() open the tty port ************************************************************************************/int tty_open_port(const char *dev_name){ int fd; /* File descriptor for the port */ fd = open(dev_name, O_RDWR | O_NOCTTY | O_NDELAY); if (-1 == fd) { perror("open_port: Unable to open tty " ); exit(1); } else { if(DEBUG) printf("The %s is opened \n",dev_name); }/* if( (val=fcntl(fd, F_SETFL, 0))< 0) perror("fcntl failed");*/ if ( isatty(fd) == 0 ) perror("This is not a tty device "); return (fd);}/************************************************************************************ * tty_set_port() set the attributes of the tty ************************************************************************************/ int tty_set_port (int fd , int nSpeed , int nBits , char nEvent , int nStop ){ struct termios new_ios,old_ios; if ( tcgetattr ( fd , &new_ios ) !=0 ) perror("Save the terminal error"); bzero( &old_ios , sizeof( struct termios )); old_ios=new_ios; tcflush(fd,TCIOFLUSH) ; new_ios.c_cflag |= CLOCAL |CREAD ; new_ios.c_cflag &= ~CSIZE ; switch (nBits) { case 5: new_ios.c_cflag |=CS5 ; break ; case 6: new_ios.c_cflag |=CS6 ; break ; case 7: new_ios.c_cflag |=CS7 ; break ; case 8: new_ios.c_cflag |=CS8 ; break ; default: perror("Wrong nBits"); break ; } switch (nSpeed ) { case 2400: cfsetispeed(&new_ios , B2400); cfsetospeed(&new_ios , B2400); break; case 4800: cfsetispeed(&new_ios , B4800); cfsetospeed(&new_ios , B4800); break; case 9600: cfsetispeed(&new_ios , B9600); cfsetospeed(&new_ios , B9600); break; case 19200: cfsetispeed(&new_ios , B19200); cfsetospeed(&new_ios , B19200); break; case 115200: cfsetispeed(&new_ios , B115200); cfsetospeed(&new_ios , B115200); break; case 460800: cfsetispeed(&new_ios , B460800); cfsetospeed(&new_ios , B460800); break; default: perror("Wrong nSpeed"); break; } switch (nEvent ) { case 'o': case 'O': new_ios.c_cflag |= PARENB ; new_ios.c_cflag |= PARODD ; new_ios.c_iflag |= (INPCK | ISTRIP); break ; case 'e': case 'E': new_ios.c_iflag |= (INPCK | ISTRIP); new_ios.c_cflag |= PARENB ; new_ios.c_cflag &= ~PARODD ; break ; case 'n': case 'N': new_ios.c_cflag &= ~PARENB ; new_ios.c_iflag &= ~INPCK ; break ; default: perror("Wrong nEvent"); break ; } if ( nStop == 1 ) new_ios.c_cflag &= ~CSTOPB ; else if ( nStop == 2 ) new_ios.c_cflag |= CSTOPB ; /*No hardware control*/ new_ios.c_cflag &= ~CRTSCTS; /*No software control*/ new_ios.c_iflag &= ~(IXON | IXOFF | IXANY); /*delay time set */ new_ios.c_cc[VTIME] = 0 ; new_ios.c_cc[VMIN] = 0 ; /*raw model*/ new_ios.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); new_ios.c_oflag &= ~OPOST; new_ios.c_iflag &= ~(INLCR|IGNCR|ICRNL); new_ios.c_iflag &= ~(ONLCR|OCRNL); new_ios.c_oflag &= ~(INLCR|IGNCR|ICRNL); new_ios.c_oflag &= ~(ONLCR|OCRNL); tcflush(fd,TCIOFLUSH) ; if (tcsetattr(fd,TCSANOW,&new_ios) != 0 ) { perror("Set the terminal error"); tcsetattr(fd,TCSANOW,&old_ios); return -1 ; } return 0;}tty linux 打开和设置范例的更多相关文章
- Linux打开文件设置
在某些情况下会要求增加Linux的文件打开数,以增加服务器到处理效率,在Linux下查看最多能打开的文件数量为: cat /proc/sys/fs/file-max 然后设置ulimit -n 文件数 ...
- Linux环境变量设置
修改环境变量PATH 最近为root添加一个环境变量发现sudo su进去没有变化所以总结了一下所有设置环境变量的方法: 查看PATH:echo $PATH 直接在命令行修改,就可以使用,但是只有在当 ...
- 教你如何在Kali Linux 环境下设置蜜罐?
导读 Pentbox是一个包含了许多可以使渗透测试工作变得简单流程化的工具的安全套件.它是用Ruby编写并且面向GNU/Linux,同时也支持Windows.MacOS和其它任何安装有Ruby的系统. ...
- linux打开80端口及80端口占用解决办法
linux打开80端口天客户那边有台服务器同一个局域网中都无法访问,排除lamp环境问题,发现时服务器中的防火墙没有开启80端口. 代码如下 复制代码vi /etc/sysconfig/iptable ...
- linux中怎样设置dhcpd
linux中怎样设置DHCP 在 linux 以下设置 DHCP一点也不复杂﹐您全部要做的仅仅有一个文件﹕/etc/dhcpd.conf . 以下﹐我用我自己的设置文件来说说怎么改动这个文件﹕ d ...
- Linux 打开句柄限制的调整
Linux 打开句柄限制的调整 参考文章: Linux---进程句柄限制总结(http://blog.csdn.net/jhcsdb/article/details/32338953) !! 本文内容 ...
- linux linux系统常用设置
linux linux系统常用设置 一.设置开机时开启数字键 修改rc.local文件 命令:vi /etc/rc.local rc.local文件中增加如下代码: INITTY=/dev/tty ...
- Linux打开防火墙telnet端口
检查端口情况:netstat -an | grep 22 关闭端口号:iptables -A INPUT -p tcp --drop 端口号-j DROP ipt ...
- linux core文件设置
http://blog.csdn.net/ctthuangcheng/article/details/8963551 linux core文件设置 分类: Linux OS Debugging Te ...
随机推荐
- 循环神经网络(RNN)
1. 场景与应用 在循环神经网络可以用于文本生成.机器翻译还有看图描述等,在这些场景中很多都出现了RNN的身影. 2. RNN的作用 传统的神经网络DNN或者CNN网络他们的输入和输出都是 ...
- wireshark的过滤
过滤源ip.目的ip.在wireshark的过滤规则框Filter中输入过滤条件.如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8:查找源地址为ip.src= ...
- SpringBoot application.yml文件不生效
yml格式对缩进有严格的要求,检查你的yml配置文件是否有不合格的缩进项. 正确的格式如下: server: port: 8881 port前必须有空格, port后的冒号 后面也需要有空格
- com.google.gson的SerializedName解决实体类与关键字的重名
使用google的gson包,解决实体类中字段与java关键字的重名: // 比如 当实体类中有switch关键字时,解决冲突如下 @SerializedName("switch" ...
- LitJson JavaScriptSerializer
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 疯狂JAVA——第七章 java基础类库
System类代表当前java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法.
- oracle,PL/SQL新建表
创建用户 -- Create the user create user U_HQ_JAVA default tablespace USERS temporary tablespace TEMP pro ...
- git协议
常用三种协议:ssh, git, http ssh协议: 使用ssh传输,安全,可授权,需要用ssh登录,一般使用添加秘钥的方式.搭建方便. git协议: 使用git-daemon监听9418端口,配 ...
- Linux 线程调度
1.线程sleep()后,会让出cpu的时间片,交由其他线程进行抢占cpu. 线程之间正常的切换是依靠时间片的. 当主线程没有结束,且其在所占有的时间片内,并没有结束自己的工作,此时,子线程将会抢占c ...
- E0443类模板 "std::unordered_set" 的参数太多
1>------ 已启动全部重新生成: 项目: QtGuiApplication20190416, 配置: Debug x64 ------1>Uic'ing QtGuiApplicati ...