POSIXメッセージキュー

いまは、IPC(プロセス間通信)にはまってます。

でも、まだひとつも動かせていません…

とりあえず今日の成果。

コンパイルまでは通るけど、
実行すると、mq_receiveのところで、

errno:90( ELOOP )
というエラーがでて、メッセージを取得できていない模様…

#include 
#include 
#include 
#include 

int main(void){
        char str[100];
        int ret;
        mqd_t qid = mq_open( "/mq123", O_RDWR|O_CREAT,S_IRWXU|S_IRWXO,NULL);
        printf("%d\n",qid);
        ret = mq_send( qid, "Hello World!!", 30, 0 );
        printf("%d\n",ret);
        ret = mq_receive( qid, str, 50, NULL );
        printf("%d\n",ret );
        printf("%d\n",errno);
        printf("%s\n",str);

        return 0;
}




わからないー

メモ

■ POSIXのリアルタイム拡張APIを使う場合は、librt.aが必要
% gcc hoge.c -lrt

■ S_IRWXU = S_IRUSR | S_IWUSR | S_IXUSR
毎度毎度論理和とらなくても、ひとつで定義されていたー


きょうはだいぶ暖かかった気がします。
これから春なんやな〜
うきうき♪

符号付き数値

上の実験コードでは、

intを char 配列として見ています。

32バイトのビット配列を

ひとつの 32ビット数値 としてみるか、

4つの 8ビット数値 といてみるかという、

要は、「見方」を変えたものです。


では、ついでに、もうひとつ「見方」を変えてみます。

#include 

int main(void){
        signed char sint8 = 0xff;

        printf("%x\n",sint8);
        printf("%x\n",(unsigned char)sint8);
        printf("%d\n",sint8);
        printf("%d\n",(unsigned char)sint8);

        return 0;
}


ffffffff
ff

  • 1

255


今度は、符号つきビット列(signed char)を

そのまま(符号つき[signed])として見るか、

符号無し(unsigned)として見るか、

という 符号の有無に関するビットの見方を変えて画面出力しています。

おなじ、0xff が、いろんな意味になっておもしろいです。

バイトオーダ

今まで、LSBは、Least Significant Byteの略だと思ってました…

なんか、大文字の B を見るとついつい、ビットではなくバイトと思ってしまって。

正しくは、Least Significant Bit の略ですね。
もっとも、意味が薄いビット

つまり、最下位ビットのことですね。

0オリジンで考えると、0番目のバイト。

LSBやMSB(Most Significant Bit)は、
ビットの並び、順番に関することば。


で、一方のバイトの並びに関することばに、

Big Endian
Little Endian

があります。

Big Endianは、
上位バイトを小さい(若い)アドレス側に
下位バイトを大きいアドレス側に配置する方法。

Little Endianは、逆に
下位バイトを小さいアドレス側に
上位バイトを大きいアドレス側に設置する方法。

で、自分が使ってる x86系は、2番目の、
Little Endianを採用しているそうなので、
でびあんで実験してみました。

#include 


void show(char nums[4]){
        printf("%x %x %x %x\n",nums[0],nums[1],nums[2],nums[3]);
}

int main(void){
        int num = 0x12345678;

        show((char*)&num);
        return 0;
}

78 56 34 12

32ビットint値を、8バイトずつに分解して、
アドレスの若い方から順に出力していくと、

0x12345678

の下位バイトから出力されました。

下位バイトをアドレスの小さい(若い)方にするのが、
Little Endian
ということだったので、実験完了!

違う環境(Big Endian)で実行してみたいな♪

パッケージのインストール

まずはネットに繋げないと話にならない。

使いかたわからん=>リブートして、ウィンドウズ上で調べる=>リブートして、でびあん上で試す、、、


なんてこと、2往復したらヤになります。

でびあんのパッケージ(ソフトウェア群?)管理は、
APT( Advanced Packaging Tool )とよばれるシステムで行います。
(だからといって、aptってうってもだめですよ(自分だけか…))

□ PPPoE設定ツールのインストール
PPPoEの設定を行う、pppoefconfというソフトをインストールします。

% apt-get install pppoeconf

上のコマンドを打つと、最初は〜だけのディスク容量を食いますがよいですか?と聞かれるので、Y(es)を。

で、次にインストールCDを求められるので、
ネットワークインストール時に使った、CDをいれて、Yを。

そうすると、するするーっと、aptさんが必要なソフトをインストールしてくれて完了。
とっても楽チンです。


で、インストールが完了したら、
% su
こまんどでスーパーユーザ(管理者モード)になって、

% ppoeconf
を実行!

pppoeconf自体は、プロバイダからあたえられた
ユーザあいでぃー、ぱすわーどを入力して、
すべてYesで進みました。

これで、はれてねっとわーくにつながりました。

iceweasel(あいすうぃーぜる)を起動して、ネットを楽しみましょう。



このあと、aptをつかって、いろいろ楽しみました♪
まずは、apt-get update
で、パッケージリスト(カタログ)を更新しておきます。
で、
% apt-get install gcc
% apt-get install g++
% apt-get install sl
と環境を整えました。




メモ:
Ctrl+Alt+F1~6で、コンソールのみの画面に遷移。
もどるのは、Ctrl+F7

でびあんのインストール

はじめに…

なぜDebianと書かずに、でびあんなのか…

うぃんどうずだと、Shift+ で、アルファベット打ちができるのに、いまの環境だと、できないから…(ーー;

そのうち、設定のしかたを知って、Debianって打つようになってればいいなぁ。

で、インストール時、さっそくつまづいたので、
そのときのメモ。


インストールは、ネットワークインストールで行いました(インストールディスクがCD1枚に収まるから楽チン)。

基本的には、でびあんぷろじぇくとの
http://www.debian.or.jp/using/quick-etch/
にしたがえばおっけーです。

ただ、私のネット環境が、PPPoE(あまり意味はわかってない…)接続のためか、追加パッケージの取得がうまくいきませんでした。。。(基本インストールだけは可能でした)

なので、ネットで調べて、うぃん上でHDDのパーティションをもいちど初期化して、やり直してみました。

今度は、インストールプログラムが起動して、一番最初のでびあんロゴがバックのプロンプトで、

install modules=ppp-usdeb

と入力。すると、追加パッケージの取得もさくさくーっとうまくいきました。

※ module = usdeb の'='が自分の環境では、いつもの(うぃんどうず上)
Shift + -
では、入力できなかったのですが、
Fn + -
で入力できました。


そんなこんなで、無事、
でびあんのデスクトップが表示されました。

で、さっそくターミナルを起動して、
テストプログラム.cをかいて、gcc!!

なんと、gccがみつからないと…

Linuxは、THE 開発者のためのマシン
的なイメージがあって、最初からgccくらいは入っていると
思っていたのですが…

で、gccのインストール方法がわからないまま、
しらばく、でびあんは放置となりました。。。

インターネットもつながらないし!!

Linuxはじめました。

Linuxをインストールしました。

うぃんびすたとデュアルブートで、
でびあんを。

インストールしたのは、3、4日前…

そのときは、インターネットもできんのかって、
すぐにやめちゃいました。

で、今日。
「難しいのはでびあんだからだ!」

「違うディストリビューションを!」って探してたら、

そこら中で、でびあんを勧める声が…(^^;
(エンジニアにはあまりデスクトップ指向が強いものは物足りないとか… あ、いちおうわたし、エンジニアです)

ということで、「もうちょっとでびあんでがんばってみよう」
ってことで、いろいろ調べたら、

やりたいことができはじめました!
※これも、でびあん上で書いてます♪

楽しい!
使えるようになると、楽しい!

なんか数時間でだいぶ成長した感じ!

ということで、これからでびあんいじるたびに、
その日できるようになったこと、学んだことを書いていきたいと
思います。