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