免费注册 查看新帖 |

Chinaunix

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

我这个程序有什么问题,怎么读不了管道产过来的字符? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-13 17:45 |只看该作者 |倒序浏览
我开了两个窗口 并事先建立了一个管道 pipe1
一个窗口  cat >;pipe1
另一个运行 readpip
readpip 代码如下:
#include <unistd.h>;
#include <stdlib.h>;
#include <stdio.h>;
#include <fcntl.h>;

#define SEC 100

int main(void)
{
     int pipin;
     int rc;
     char buf[80];

     if((pipin=open("pipe1",O_RDONLY|O_NONBLOCK))<0){
            perror("open pipe1";
            exit(EXIT_FAILURE);
    }       
     rc=0;
     while(rc==0){
             rc=read(pipin,buf,80);
            if(rc>;0){
                    buf[rc]='\0';
                   printf("read from pipe1 %s /n", buf);
     }else if(rc==0){
            sleep(SEC);
     }else{
              perror("read pipe1";
             exit(EXIT_FAILURE);
         }
     }
               
    close(pipin);
    exit(EXIT_SUCCESS);
       
}

请大家帮忙,从管道读取数据这个程序对么,谁能提供一个例子 谢谢啦

论坛徽章:
0
2 [报告]
发表于 2005-07-13 19:32 |只看该作者

我这个程序有什么问题,怎么读不了管道产过来的字符?

以阻塞方式打开管道试试.

论坛徽章:
0
3 [报告]
发表于 2005-07-13 23:35 |只看该作者

我这个程序有什么问题,怎么读不了管道产过来的字符?

但是 我还是不太懂, 变成阻塞方式 我去掉了 NONBLOCK的打开方式
为什么阻塞方式就可以呢 ? 自己研究一下吧

论坛徽章:
0
4 [报告]
发表于 2005-07-14 08:19 |只看该作者

我这个程序有什么问题,怎么读不了管道产过来的字符?

非阻塞是立即返回的,最好配合超时一起使用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP