全方位解讀Ruby讀寫UNIX命名管道
Ruby語言為我們帶來了簡便靈活的代碼編寫方式,它可以方便的幫助我們實現(xiàn)許多功能。比如本文要向大家介紹的Ruby讀寫UNIX命名管道的相關(guān)技巧。#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的前一個參數(shù)是用來指明管道文件的路徑;后一個參數(shù)表示可以對該管道進行讀寫操作;其他可用的參數(shù)還有:File::RDWR|File::NONBLOCK
讀:File::RD
寫:File::WR
讀寫:File::RDWR
非阻塞模式:File::NONBLOCK
這里解釋一下非阻塞模式,如果不加這個參數(shù)在程序不斷往管道內(nèi)寫入數(shù)據(jù),同時沒有程序往外讀取數(shù)據(jù)的時候,管道達到1M后就會把寫管道的進程阻塞起來。加了這個參數(shù)管道就不會阻塞。
然后來看一下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是目標(biāo)文件的對象。