Genero語言中其實提供的Built-in函式與可應用的API並不多,因此,有時需要一些支援功能就顯的比較麻煩一些。若要用combine C/C++,程序上又較為麻煩,因此可以考慮利用base.channel的功能,在外部﹝shell上﹞執行後再由程式將執行結果讀入系統中。
01 MAIN |
04: 使用base.channel當然需要先進行DEFINE的動作
05: 利用LET channel_name = base.channel.create( )來創建channel
06: 設定分隔符號,讀取狀態下可設可不設
07: 如果是要讀外部指令的回傳結果,請用channel.openPipe(“指令",”r”),第二參數『r』是表示要讀取
請注意若指令的輸出是在std err(error畫面輸出),則請導向到標準輸出﹝2>1&﹞
08: 利用ch.read讀到結束為止
11: 用完的channel請記得close,否則會引發不可預期的錯誤
當然channel可以用來讀執行指令的結果,更可以用來讀取檔案。
01 MAIN |
06: 讀取檔案時要改用openFile,並且指定檔名、指定屬性【r:read only/ w:write only(一定是開空檔案)/ a:append only(一定不是空檔案,不可讀只能寫)/ u: update檔案 / b:binary file only】
09: 此處用readLine( )表示一次讀一整行進來,注意在Genero2以上版本就要定意由string型態的變數來接
10: isEOF( )讀到檔尾符號出現
14: ch.close( )還是要記得關channel
base.channel的使用很多元,詳細資料也可參考Genero線上說明。
柚子爸,請問一下,這個方法是指直接抓取 Unix 主機的執行指令結果,是不是不適用在 Windows 的程式執行結果?