大佬教程收集整理的这篇文章主要介绍了如果没有设置规范模式,非阻塞读取失败?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <unistd.h> #include <fcntl.h> #include <errno.h> #include <String.h> #include <stdlib.h> #define MSG_TRY "try again\n" int main(void) { char buf[10]; int fd,n; fd = open("/dev/tty",O_RDONLY|O_NONBLOCK); if(fd<0) { perror("open /dev/tty"); exit(1); } tryagain: n = read(fd,buf,10); if (n < 0) { if (errno == EAGAIN) { sleep(1); write(STDOUT_FILENO,MSG_TRY,strlen(MSG_TRY)); goto tryagain; } perror("read /dev/tty"); exit(1); } write(STDOUT_FILENO,n); close(fd); return 0; }
发现这个来源非常有帮助. http://en.wikibooks.org/wiki/Serial_Programming/termios#Opening.2FClosing_a_Serial_Device
我今天正在使用tty(RS232端口)设备做一些工作.
http://www.gnu.org/software/libc/manual/html_node/Terminal-Modes.html#Terminal-Modes
你怎么知道终端是规范的还是原始的?如果我理解正确,你说你已经设置了终端非规范(原始),但后来又改回来了.它是否正确?
在那种情况下,您的代码中是否设置了非规范设备?
如果你想要原始模式,有一个名为cfmakeraw()的函数.
并且不要忘记使用tcsetattr()设置属性.
例如
const struct termios yourtermios
yourtermios.c_cc [VTIME] = 0;
yourtermios.c_cc [VMIN] = 1;
或者你认为合适的价值.
这是关于规范与否的重要信息来源.
http://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html#Canonical-or-Not
以上是大佬教程为你收集整理的如果没有设置规范模式,非阻塞读取失败?全部内容,希望文章能够帮你解决如果没有设置规范模式,非阻塞读取失败?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。