popenとpclose
パイプの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と同じ結果である.

