ファイヤープロジェクト
popenとpclose
2003-07-20T15:13+09:00   matsu
パイプのopenとclose.
popenとpcloseは指定したsystem関数にパイプ機能を加えた感じで使用できる.実際shell経由で引数のコマンドを渡すので,オーバーヘッドは大きいがワイルドカードなどを使用できる.で,パイプを使用すると,あるコマンドの出力を別のコマンドの入力に使用できる.例えば
dmesg | head
では,dmesgの出力がheadの入力となりそしてそのheadの出力が端末に出力される.
popenはファイルストリームを開く.pcloseは閉じる.popenではファイルストリームが読み込み用か書き込み用かどちらかを選択する.読むか書くかと聞かれたら,なんとなくまずは読んでみたい気がするのは私だけだろうか.読み込み用で開く場合,popenしたプロセスはコマンドラインでは|の右側ということになる.以下,popenで読み込み用パイプストリームを開いた場合のサンプル.
popenの第二引数に"r"を指定すると読み込みモードでパイプをオープンする.そしてこのとき読み込みようのファイルストリームが返る.失敗するとNULLを返す.以下実行結果.
2003年

4月
10日
木曜日
21:50:48
JST
読んだら書きたい.書き込み用でパイプをオープンしたプロセスはコマンドラインでは|の左側ということになる.以下サンプル.
popenの第二引数に"w"を指定するとパイプを書き込みモードでオープンする.そして書き込みようのファイルストリームを返す.失敗するとNULLを返す.以下実行結果.
Message:        #                   #
       #####################
       #####################
                  #
                  ##
       #############
       ############
       #
           #### 
         #########
        ##       ##
       #           #
       #          ##
        ##       ##
         #########
           #### 
   ##         ## 
 ##   ####  ###### 
 #     #######   ## 
 #    ###  #       #
 #   ###   #      ##
 #######    #######
   ###       ####  ## 
                    #
           #### 
         #########
        ##   #   ##
       #     #     #
       #     #    ##
        #    #  ###
         #   #####
                
これは
echo "hoge" | banner -w 30
と同じ結果である.
matsu(C)
Since 2002
Mail to matsu