当前位置:  技术问答>linux和unix

急急急 求大牛解决 伪终端问题

    来源: 互联网  发布时间:2017-01-24

    本文导语:  我需要将设备的实时调试信息打印到串口、网口,所以选择遍历为终端来实现,代码如下:        setutent();     while ((pUtmp = getutent()) != NULL)     {         if (pUtmp->ut_type == USER_PROCESS)         {    ...

我需要将设备的实时调试信息打印到串口、网口,所以选择遍历为终端来实现,代码如下:
  
    setutent();
    while ((pUtmp = getutent()) != NULL)
    {
        if (pUtmp->ut_type == USER_PROCESS)
        {
            snprintf(strTtyName, usTtyNameLen, "/dev/%s", pUtmp->ut_line);

            if ((fd = open(strTtyName, O_RDWR | O_NONBLOCK)) == -1)
            {
                continue;
            }

            fcntl(fd, O_NONBLOCK);
            //测试发现有部分数据无法输出,通过syslog发现在if条件下的写的时候出了问题。
            //开始是怀疑数据太多,导致串口输出的数据被覆盖了,因此将DATA_TO_TERMIN_LEN设为128,即每次输出  
            //128字节并休眠一段时间,结果发现还是有数据丢失。。。求牛人解救解救俺。。。
   nLogStrOffset = 0;
            while(nLogStrOffset = DATA_TO_TERMIN_LEN)
{
if(-1 == write(fd, pLogStr, DATA_TO_TERMIN_LEN))
{
syslog(LOG_ERR,"Write data to terminal Failed2!n");
         break;
}
usleep(10000);
nLogStrOffset += DATA_TO_TERMIN_LEN;
}
else
{
if(-1 == write(fd, pLogStr, (length - nLogStrOffset)))
{
         syslog(LOG_ERR,"Write data to terminal Failed3!n");
break;
}
nLogStrOffset = length;
}
            }
            close(fd);
        }
    }

我想每次输出128个字节已经算比较少了,还有休眠来解决速度问题,那么终端不应该来不及处理了吧?
因此想来想去应该和这里没有关系,但是追踪发现只可能是这里有问题。。。
注:无线程,无多进程输出。。。

|
write出错了?不是的话应该是你的dev的问题吧

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 半路出家转行学编程如何才能成为大牛?
  • 呼唤大牛,大牛降临护乎!!!(linux,开启进程问题)
  • 求大牛们赐教!
  • 请大牛指导程序思路
  • 难道csdn没有gstreamer大牛?
  • EJB这么火,决定开始学习,请各位大牛指教,初学该看什么书?
  • 首先,这不是个问题,是个总结。(弱智型的。大牛们不要笑话俺)
  • 那位大牛能知道????
  • 请教版上大牛~
  • 安装net-snmp时遇到问题了,请大牛们指导
  • [求助大牛]如何将连续的多个空格换成tab?
  • [跪求大牛]硬盘有点泄露了。。。
  • 求shell大牛指点
  • 请教各位大牛一个makefile的问题
  • linux下采集视频数据的相关问题,是大牛就进来吧~~
  • 请大牛帮忙,shell脚本的问题
  • 有关Ubuntu的问题,请大牛指点(内详)
  • linux的图形界面为什么没有命令行重要呢,大牛们帮我解惑吧
  • linux大牛来救!HTTP服务器配置文件directory容器中options参数怎么一回事?
  • 请教各位大牛~~那个系统调用open()创建的是什么类型的文件?
  • !!请各位大牛帮忙了,在linux下提取系统时间的话,用什么方法能提取到比毫秒更精确的时间呢?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3