网络安全参考 | 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   字体: [ ]  
 
      if(errno==EAGAIN)
        printf("no data avlaible\n");
   
    printf("real read bytes %d\n",ret_size);
    sleep(1);
  }
 
  pause();
  unlink(FIFO_SERVER);
}

  程序应用说明:

  把读程序编译成两个不同版本:

  • 阻塞读版本:br
  • 以及非阻塞读版本nbr

  把写程序编译成两个四个版本:

  • 非阻塞且请求写的字节数大于PIPE_BUF版本:nbwg
  • 非阻塞且请求写的字节数不大于PIPE_BUF版本:版本nbw
  • 阻塞且请求写的字节数大于PIPE_BUF版本:bwg
  • 阻塞且请求写的字节数不大于PIPE_BUF版本:版本bw

  下面将使用br、nbr、w代替相应程序中的阻塞读、非阻塞读

  验证阻塞写操作:

  1. 当请求写入的数据量大于PIPE_BUF时的非原子性:

nbr 1000
bwg

  2. 当请求写入的数据量不大于PIPE_BUF时的原子性:

nbr 1000
bw

  验证非阻塞写操作:

  1. 当请求写入的数据量大于PIPE_BUF时的非原子性:

nbr 1000
nbwg

  2. 请求写入的数据量不大于PIPE_BUF时的原子性:

nbr 1000
nbw

  不管写打开的阻塞标志是否设置,在请求写入的字节数大于4096时,都不保证写入的原子性。但二者有本质区别:

  对于阻塞写来说,写操作在写满FIFO的空闲区域后,会一直等待,直到写完所有数据为止,请求写入的数据最终都会写入FIFO;

  而非阻塞写则在写满FIFO的空闲区域后,就返回(实际写入的字节数),所以有些数据最终不能够写入。

  对于读操作的验证则比较简单,不再讨论。

  2.5 有名管道应用实例

  在验证了相应的读写规则后,应用实例似乎就没有必要了。

  小结

  管道常用于两个方面:

 
推荐文章
·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 织梦内容管理系统