网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 程序设计 > 进程间通讯 > 文章  
Linux环境进程间通信: 管道及有名管道
文章来源: IBM Developerworks 文章作者: 郑彦兴 发布时间: 2002-12-11   字体: [ ]  
 
    //fd=open(FIFO_SERVER,O_WRONLY,0);
    //设置阻塞标志
    real_wnum=write(fd,w_buf,2048);
 
    if(real_wnum==-1)
    {
      if(errno==EAGAIN)
        printf("write to fifo error; try later\n");
    }
    else
      printf("real write num is %d\n",real_wnum);
 
    real_wnum=write(fd,w_buf,5000);
    //5000用于测试写入字节大于4096时的非原子性
    //real_wnum=write(fd,w_buf,4096);
    //4096用于测试写入字节不大于4096时的原子性
   
    if(real_wnum==-1)
      if(errno==EAGAIN)
        printf("try later\n");
}

  程序2:与程序1一起测试写FIFO的规则,第一个命令行参数是请求从FIFO读出的字节数

#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
 
#define FIFO_SERVER "/tmp/fifoserver"
 
main(int argc,char** argv)
{
  char r_buf[4096*2];
  int  fd;
  int  r_size;
  int  ret_size;
 
  r_size=atoi(argv[1]);
  printf("requred real read bytes %d\n",r_size);
 
  memset(r_buf,0,sizeof(r_buf));
 
  fd=open(FIFO_SERVER,O_RDONLY|O_NONBLOCK,0);
  //fd=open(FIFO_SERVER,O_RDONLY,0);
  //在此处可以把读程序编译成两个不同版本:阻塞版本及非阻塞版本
 
  if(fd==-1)
  {
    printf("open %s for read error\n");
    exit();
  }
 
  while(1)
  {
    memset(r_buf,0,sizeof(r_buf));
    ret_size=read(fd,r_buf,r_size);
   
    if(ret_size==-1)
 
推荐文章
·Linux环境进程间通信(二): 信号(
·深刻理解Linux进程间通信(IPC)
 
 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·Linux环境进程间通信(二
·深刻理解Linux进程间通
相关文章
·深刻理解Linux进程间通
·Linux环境进程间通信(二
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统