2010年06月25日11:24 カテゴリ system()関数と、マルチスレッドと、シグナルハンドラ まぁ、わかってるひとには、タイトル見ただけで、私が間抜けなプログラマだと宣伝してるだけなのかもなのですが、今週調べたことを備忘録代わりに。 マルチスレッドプログラムで、あるスレッドから、system()関数を使いました。 status = system("pwd"); みたいなコードです。 ところが、statusが、-1になったり、正常にsystem()関数で実行したコマンドの戻り値が取れたり、と、挙動が変わります。 で、このプログラム、すでにSIG_CHLDのシグナルハンドラが登録されていました。中身は、fork-execして終了した子をゾンビ化させないためのwaitpid()だけの簡単なものです。 system()関数が、-1で終了する時には、シグナルハンドラの方でsystem()関
MAX_PATHに関する考察とか なんとなく悩まされたので悩んだ過程と私なりの結論とかを書いてみます。 考察なんで嘘書いてます。(言いきってどうする)。 嘘発見情報や追加情報などありましたらぜひご連絡ください。 広い考察をしたいくせに確認できるプラットホームがあまりに少ないのが 問題です。補完できるときに補完したい... ここで「問題」としているもののは、そもそもそういうふうに使われることを 意図して作られていないものを無理に使っているから、と言えるような 気もしますが... MAX_PATHとは まずはMSDN Libraryの解説をごらんください。 この定数はstdlib.hにあると書いてあります。 確かに、 Mingw32 (msvcrt-2000.03.27) Visual C++ 6.0 にはありますが、少なくとも FreeBSD (4.3-RELEASE) NetBSD (1.
ゆとりなもので,ついこないだまで動的リンクと静的リンクの違いがわかっていなかった.動的リンクというのが理解できた頃,そっかユーティリティライブラリは自分で共有ライブラリ作ってしまえばいいんだ,というごく当たり前のことが理解できた. UNIXをさわりはじめていた初期の頃,mecab.soのシンボリックが〜〜という用なハマりがあったのだけれど,あれは要するに実行時に共有ファイルへのパスを指定してあげればよかっただけのこと. わかると当たり前だけれど,わからないと「何がわからないのかわからない」状態に落ち込むなぁ,と改めて思いました. (幸いなことに,僕の周りには「ゆとり乙ww」と指導してくれる方々がいるので認識できるようになるのですが,少なくとも大学(院)時代はそうでなかったわけで,ゆとりスパイラルの恐ろしさを体感した気がしています.) というわけで自分用共有ライブラリの作り方をきちんと理解で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く