免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2204 | 回复: 4
打印 上一主题 下一主题

tail -f sys.log |myprg 为什么总中断,我的程序有问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-07 14:45 |只看该作者 |倒序浏览
tail -f sys.log |myprg

我的目的是通过上面的命令用tail 监测sys.log 的内容,如果sys.log增加若干行,就行把增加的内容发到myprg中处理.可是
执行时开始没问题,正常显示了sys.log 最后几行内容,但我换一屏在sys.log 加了几行,切回来时发现程序中断了.不知是什么原因,
可能是我的程序有问题,因为我用tail -f sys.log |cat 就好使.为什么呢.
下面是myprg的源码:
int main()
{
    char _recv_buf[2000] ;

    memset(_recv_buf,0, sizeof(_recv_buf) ) ;
    gets(_recv_buf);
    printf("my str:=[%s]\n",_recv_buf);

    /* 其他的处理我先蔽必掉了
   .......
    */
}
请高手们帮个忙,先谢谢啦 !!!

[ 本帖最后由 wkl 于 2008-10-7 14:48 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-10-07 14:56 |只看该作者
static void
raw_cat(int rfd)
{
   int off, wfd;
   ssize_t nr, nw;
   static size_t bsize;
   static char *buf = NULL;
   struct stat sbuf;

   wfd = fileno(stdout);
   if (buf == NULL) {
      if (fstat(wfd, &sbuf))
         err(1, "%s", filename);
      bsize = MAX(sbuf.st_blksize, 1024);
      if ((buf = malloc(bsize)) == NULL)
         err(1, "buffer");
   }
   while ((nr = read(rfd, buf, bsize)) > 0)
      for (off = 0; nr; nr -= nw, off += nw)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((nw = write(wfd, buf + off, (size_t)nr)) < 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err(1, "stdout");
&nbsp;&nbsp;&nbsp;if (nr < 0) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;warn("%s", filename);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rval = 1;
&nbsp;&nbsp;&nbsp;}
}


上面是cat的代码,lz可以参考一下

论坛徽章:
0
3 [报告]
发表于 2008-10-07 16:13 |只看该作者
我用read 也是不好使!哪位大侠还能帮帮忙!

论坛徽章:
0
4 [报告]
发表于 2008-10-07 20:37 |只看该作者
自已顶一下.帮帮忙啦

论坛徽章:
0
5 [报告]
发表于 2008-10-07 21:01 |只看该作者
原帖由 wkl 于 2008-10-7 14:45 发表
tail -f sys.log |myprg

我的目的是通过上面的命令用tail 监测sys.log 的内容,如果sys.log增加若干行,就行把增加的内容发到myprg中处理.可是
执行时开始没问题,正常显示了sys.log 最后几行内容,但我换一屏在 ...

ms你应该在gets之前加上while (1)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP