過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2011/07/24
FastCGI の fwrite の戻り値

 
ネタ切れなので、昔調べた、6年前ぐらいから気になってる技術ネタ。
 
ダウンロードCGI を C/C++言語で作る場合、fwrite で転送してやることで、
現在ダウンロードしているバイト数などをサーバー側で把握できます。
 
FCGI を使うと fwrite/fread などは全て FCGI_Write 等に置換されてしまい、
この挙動が変わってしまうので、ユーザーがダウンロードを完了したかどうか?
というのを判断する材料がありません。
 
また fwrite( const void* … ) という定義も fwrite( void* … ) になって
しまうので、厳格にプログラミングしている人にとっては最悪です。
 
せっかく「この関数の中では変数の中身を変更しないよ!」ってルールで実装
してるのに、fcgi モードでコンパイルすると (void*) でキャストしてやらないと
いけない。
 
安全を考えるのなら、キャストでは無く一時バッファにコピーして渡すべきだけど。
 
 
fcgi のバージョンすら覚えて無いけど、そんな fcgi をまだ現役で使ってます。

0 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。