love.春ですなあもうすっかり暖かくなりまして、近所の公園でもさくらが満開になっておりまする。明解C言語中級が(とりあえず)終わって、今は前橋和弥さんのC言語ポインタ完全制覇という本を読んでいます。日記のネタ勉強になることがたくさん書いてあって、2章まで読み終わったので、とりまとめと言いますか、自分メモ用に残しておこうかなと。問題集ではないので、自分でまとめないと意味がないっすからね。いって、ノートとかにまとめると後から自分で読んでも訳が分からんものになっちゃうんで、それよりも人の目に触れるインターネット上に残す方が自分にとってもいいっていう不思議な世の中になったもんだ。コンパイルのオプションいきなりタイトルコールに入ってぶっとんでしまいそうだが、ここから本題です。以前かぼちゃさんがプログラムをコンパイルしているときに-Wallというオプションをつけていたのを覚えていたのだが、最適化っていうのをやってくれるってものだと思っていたのですが、-Wallってのはいろいろあるオプションをすべて有効にしてコンパイルするっていうオプションのようで、デバッグ中にはつけるような感じのもんらしい。試しに以前作っていたプログラムに-Wallをつけてみると、使ってない変数を教えてくれた。なんという世話焼き女房ですこと!いままで全く気にしてなかったけど、覚えておこう。本書ではコンパイルの警告レベルは上げようという事でした。変数のアドレス、関数のアドレスポインタは変数のアドレスの最初のやつってことですが(あいまいだな(笑))、関数でもなんでもメモリはアドレスで管理しているのだ。ことで、いろんなアドレスを比べてみるというもの。仮想アドレス空間の説明を見たときに、今までの何かが色々と紐づいてほお~っと思った瞬間でもあります。KVMでVMを作ったときとか、いろいろなアプリケーションを動かしているときとか、しっかりとした理論が分かった訳ではないけど、仮想アドレス空間に物理メモリを割り当てるという言葉はなかなか重要なキーワードではないかと思います。ちなみにアドレスの並びは書籍と同じようになりました。0x7fff2e475bfccallocやprintfは自分で付け足したもんですが、これも当然アドレスがあります。この並びがあとあと重要なものになってまいるのです。仕組みはちゃんとは分からないけど、このまま深く突っ込んでいくと、言葉でしか出てこなかったシステムコールとかDLLとかを利用する側の事が出てくるんだと思う。表の中のアドレスをよく見ると0x7fff2e475bfcを使っているのが2個あるぞ!となりますが、これに関しては、「へぇ、あんたも0x7fff2e475bfcっていうんだ」ってな感じで某マンガのように二人が出会う事はありません。二つはfunc1内とfunc2内で宣言されているもので、そこだけの変数なのです。うまく説明できてない気がするので、分かりづらい人はスコープと変数とかのキーワードでぐぐってください。malloc()はシステムコール??そう思ってる訳ではなくて、本の中でのタイトルがこうでした。Linuxにはstraceというコマンドがあるので、実際に見てみようのコーナー。mallocを使った簡単なプログラムを用意する。0;}straceする。?本書に書いてるbrkも出てきていますね。何してるんだかよく分かりませんけど。ところどころにでくるmmapってのが、さっきも言ってた仮想アドレスに関するシステムコールらしいです。mprotectはメモリ保護かな?今まではstraceなんて身近じゃなかったけど、Cをやると今までよりかは身近に感じた。Cはインフラーを育てるプログラミング言語なのだ。インフラーって何だって?昔はそうなりたいという人や物の最後にラーをつけて表現していたので、それをパクってみました。ネタに走ってしまいましたが、まあいいでしょ。まあPHPでもJAVAでもいいと思いますけどね。何を使おうが、実際にやるのが一番なんです。いまでしょって流行ってますし。毎日徹夜してるエンジニアの人は、どこで寝るの?居間でしょ!ってネタを持っているらしい。知らないけど(笑)ちょっと話が逸れてしまったけど、さっきstraceをしたときにシステムコールがずらずらと出てきましたが、それを直接実行することはできるのかなぁなんて思ったけど、できるのかしらね。その6こないだ作った簡易Webサーバーをマルチタスク化するよ。Takekenインターネット利用者のITリテラシーを向上しようという目的で生まれた、2次元キャラのたけけんです。サーバー弄りからプログラミングまで幅広く書いています。拝見させていただきました。tcpdumpで中身をみてみよう。このサイトはさくらのクラウドで動いています。ntopAndroidの開発でC++のコードを使うにはメール送信のリトライ(再送)について考えてみたビール酵母アレルギーだと!?QEMUでエミューレートするCPUを変えてみようApacheのmod_proxyを使ってみるtcpdumpで中身をみてみよう。Comments【Ubuntu】UbuntuServerをコンソールからデスクトップ画面で操作する。さくらの新スタンダードプランのサーバーにRailsを入れて、Redmineをインストールした。