Ruby语言为我们带来了简便灵活的代码编写方式,它可以方便的帮助我们实现许多功能。比如本文要向大家介绍的Ruby读写UNIX命名管道的相关技巧。#t#
先来看一下Ruby读写UNIX命名管道中的写管道的部分:
- fp = open ‘pipe28′, File::RDWR
- arcf=File.open(”/Tbackup/drb
/mctps01.dbf”,”rb”) - while !arcf.eof?
- fp.syswrite(arcf.read(1048576))
- end
- fp.close
- arcf.close
其中fp是管道的文件对象,arcf则是原文件的文件对象。打开方法open的前一个参数是用来指明管道文件的路径;后一个参数表示可以对该管道进行读写操作;其他可用的参数还有:File::RDWR|File::NONBLOCK
读:File::RD
写:File::WR
读写:File::RDWR
非阻塞模式:File::NONBLOCK
这里解释一下非阻塞模式,如果不加这个参数在程序不断往管道内写入数据,同时没有程序往外读取数据的时候,管道达到1M后就会把写管道的进程阻塞起来。加了这个参数管道就不会阻塞。
然后来看一下Ruby读写UNIX命名管道中的读管道的程序
- dfp=File.new(’/Tbackup/
hutest1.db’,'wb+’) - pfp=open ‘abc1′, File::RDWR
- while true
- dfp.write(pfp.read(1048576))
- end
- dfp.close
- pfp.close
这里pfp是管道文件的对象,而dfp是目标文件的对象。