No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 1230 | 1231 | 1232 |...| 1307 | 1308 | 1309 || Next»

send を再び

ということで数日前の現象( non-blocking の send ではまる)を再現させようと思ったらプログラムはすでに書き換わってて再現不能.別のプログラム書いて試してみたら今度はうまく送信したバイト数だけが戻っていたので実は数日前の現象は見間違いだったか別の問題との兼ね合いだったように思える.ただ,どっかであの記述を見た記憶があるのでほんとのところどうなんだろうか? それはさておき,今度は "MSG_DONTWAIT" 指定してるのにブロックされてしまう現象が…

英語でスライドを作ると

とても時間がかかることが判明.というか,英語でどう話そうか考えるのに時間を食っている気がするけど… 何はともあれ世界の共通語が日本語になったらうれしいなと思う今日この頃.

gcc2.95.2 をコンパイル

適当なバージョンの libstdc++ がほしいので gcc2.95.2 をコンパイル(ムダ).しかし, glibc-2.2 以降ではパッチを当てないとコンパイルできないことに気づかず時間を無駄に.

結局 ftp://ftp.ilog.fr/pub/Users/haible/utf8/gcc-glibc-2.2-compat.diff のパッチを当てなさいとのこと.それはさておき glibc のバージョンを下げないとやりたいことができないのかも…

SUIFのC++ frontend

5年前のLinux用バイナリ配布って… うまく動きません.

non-blocking の send ではまる

socket でデータを送るときに send に MSG_DONTWAIT を指定して非ブロックにして送る.

int ret = ::send(sock, buf, len, MSG_DONTWAIT);

このとき,戻り値 ret は -1 ならエラー, 0 ならすべて送信キューに入った,正の値なら送信キューに入れられただけの長さ.とういことで,戻り値は送った長さではない.write と違うんじゃないのかとマニュアルに問いかけたい…

追記:

後日再び試すがちゃんと write と同じ結果になっている( send を再び).すべてキューに入った場合にもう一度0バイトを送信しにいってたのかもしれないなぁと思ってみたり.

Gentoo で古い gcc を

gcc 2.95.x が必要そうなので gentoo に入れ込むことにした.普通に emerge しても packages でマスクされてるとか文句が出るので /etc/make.profile/packages を編集して gcc のエントリを以下に書き換え.

>=sys-devel/gcc-2.95.3-r9>

そしてから emerge =sys-devel/gcc-2.95.3-r9 したら gcc2.95.x がうまく emerge される.以降は gcc-config で切り替えができるとのこと.

«Prev || 1 | 2 | 3 |...| 1230 | 1231 | 1232 |...| 1307 | 1308 | 1309 || Next»
Search
Feeds

Page Top