データ - みる会図書館


検索対象: UNIX MAGAZINE 2001年1月号
56件見つかりました。

1. UNIX MAGAZINE 2001年1月号

夕食会は突然に。 プロジェクト 変電所で出火があったという連絡が入った。電気は途絶え、 照明は暗くなっていき、ハードティスクがゆっくりと回転速度を落とす データは、トンネル内で立ち往生した地下鉄のように止まったまま アシスタントがろうそくを持って現れ、ティクアウトの夕食を 買い出しに行った者が戻ったそして誰かが口を開いた それで、テータすへてをとうやってリカバリーするのですか ? 答える者はいない。神のみぞ知る、といった具合だ ストレージは、サーバーと同じネットワーク上にあった 電気が来ればサーバーは元に戻る だが、データは・・・戻らないたろう そんな時こそ、あなたのお役に立ちます

2. UNIX MAGAZINE 2001年1月号

図 2 VRML データの階層本告 ント PC での描画速度は、その 3 次元空間に含まれるポ リゴン数に反比例します。したがって、 LoD ノードを利 メッシュ領域 : 大 データ詳細度 : 低 用すれはクライアント PC での不必要な描画がなくなり、 3 次元仮想空間をスムーズに移動できるだろうという考え 方です。 しかし、現在の LoD ノードの定義では、ユーサーとオ プジェクトの距離に応したレベルの切替えしか言当できま せん。これでは、クライアント PC のメモリ量か不十分 であっても、近くに寄っていけばポリゴン数の多いものが 描画されてしまい、空間内のスムーズな移動が困難になり ます。 問題への対処 NGI プロジェクトでは、震災情幸財是供システムの構築 にあたり、大容量のデータも扱えるように VRML ファ り、遠ざかって日本地図本をて被災或の範囲を確 イルを構成する手法を考案し、 BB と協調して動作する 訒するといった重川乍が考えられます。 VRML プラウサを開発しました [ 3 ] 。システムの基本的 川じ、 さきほども述べたように、市町村レベルの地震情報では な要件は以下の 3 つです。 詳細な 3 次元の日本地図か必要になりますが、日本本を 起重加芋に、 3 次元仮想空間か即座に表示される。 0 御敢するときにはおおまかなデータで十分です。そこで、 ・ネットワークの状況やクライアント端末の処理能力を考 近ついたときにも遠ざかったときにもユーサーが地図ーヒを 慮したうえで、スムーズな空間移動を可能にする。 スムーズに移動できるように、 VRML の LoD ノードの 氏限の表示品質寺する。 機能を用いて 3 段階の言田度を用意することにしました。 さらに、ユーサーの視界に合わせて 3 次元データの送信 このシステムでは、これらの要件を実現するために、利 や表示がおこなえるように、もっとも田度の高いデータ 用可能なネットワーク帯域に関する情報を BB との協調 ( 市町村レベル ) では地図を細かく分割し、もっとも詳細 によって取得し、ネットワークの状況とクライアント PC 度の低いデータではおおまかにうリして、階層構造をもつ の表示能力に応した VRML オプジェクトの中幻をおこな VRML データを作成しました ( 図 2 ) 。なお、データ作成 います。 にあたってはウエサーニューズの協力を得て、同社の所有 以下では、これらの要件を満たすシステムをいかにして する日本全土の VRML データをこの形式に加工していた 構築したかを説明します。 だきました。 図 2 のメッシュ状に分割された部うゞ、 1 つのオプジェ 拡張 VRML システム クトとして扱われます。 1 つのオプジェクトは、地形のポ リゴンデータを表現する VRML ファイルとそのテクス 3 次元テータの構成 チャデータである PNG ファイルから橢及されています。 もっとも諞田度の低いレベルでは 4 個のオプジェクト、中 ます、ユーサーの現在位置に応して、必要とされるオ プジェクトから順次送信して表示するように空間データを 程度のレベルでは 146 個のオプジェクト、そしてもっと も言岩田度の高いレベルでは 4 , 176 個のオプジェクトで日 構成することを考えました。これは、日本地図の任意の地 本全土を表現します。これらすべてのオプジェクトのデー 点間をユーサーがスムーズに移重丿けることを想定していま タサイズの合計は、 416MB にもなります。 す。具ー勺には、 j 止プいて市町村レベルの地震情報を見た 連載 /Cyber Kansai project—@ 中中 域度 領細 シタ メデ 小高 域度 領細 メデ 163 UNIX MAGAZINE 2001.1

3. UNIX MAGAZINE 2001年1月号

0 図 3 plain2 によるテキストから形式への変換 (a) 入力するテキスト い ) んごは ーみかんに 十一 (b)plain2 の出力 \begin{center} \begin{tabular}{ lc lc は \hline りんご & 10 \ \ \hline みかん & 20 \ \ \hline \end{tabular}\\ \end{center} (c) 整形結果 手順か複雑になるときは Makefile を用意しなければなら ないこともあるでしよう。 しかし、これも PerI を利用すれは以下のようなプログ りんご 10 みかん 20 ラムとして実現できます。 sub p1ain2 { local($text) open (p1ain2 , p1ain2 —tex print p1ain2 $text ; c10se(p1ain2) ; ( cat p1ain2. texc print $t ; 図版の自動 &p1ain2 ( くく EOF ) ; ー十一一十 い ) んごは ーみかんに EOF —nopre > p1ain2 . tex グラデーションで塗り潰した攵研彡を文書の区切りなどに 使うときには、あらかしめ EPS (Encapsulated post- Script) 形式などのファイルを作成しておかなければなり ません。 この場合にも、図 4 の Perl プログラムで EPS の図形 を生成し、同時にで参照可能な形式のファイルを出 力することもできます。 170 図 4 グラデーション・ファイル生成プログラム } for fill closepath x2 y2 lineto xl y2 lineto xl yl moveto x2 yl lineto newpath /y2 10 def /x2 xl 0 . 1 add def /yl 0 def /xl i 10 div def i 1000 div setgray /i exch def 0 1 1000 { %%BoundingBox : 0 0 100 10 %!PS-Adobe-2.0 EPSF—2.0 print gradation くく EOF ; open (gradation, " > gradation. eps" ) ; UNIX MAGAZINE 2001.1 図 5 の PerI プログラムを実行すると、カレント・ディレ ットマップ・データを利用するほうが手間がかかりません。 た場合には、フォントをインストールするのではなく、ビ たとえばのような牛幇朱な記号を 1 回だけ使うといっ で生成するようにしておけば、いくらか簡単になります。 と労力の無駄になりかねません。これも、 perl フログラム 数回しか利用しないフォントをインストーノレするのは時 インストールしておく必要があります。しかし、せいぜい たいときは、あらかしめ ' I 用のフォントをシステムに また、に標準で用意されていないフォントを使い くと扱いか楽になるでしよう。 ットマップ・データであれは、テキストとして記述してお して扱うのはリ巨見実的かもしれません。しかし、小さなビ 般に写真などの画像データはサイズカ吠きく、テキストと データを EPS ファイルに変換したものを使用します。 にビットマップ・データを取り込む場合、通常は ビットマップ・テータの利用 生成された図版 (gradation ・ eps) ( 誌面の都合上、斤り返しています ) EOF width=\columnwidth} \epsfile{file=gradation. eps , print くく ) EOF ' ・ close(gradation) ; EOF

4. UNIX MAGAZINE 2001年1月号

連載 /Cyber Kansai Project— 図 1 震災情報招共システムの全体像 地震情報 気象業務支援センター 天気システム 報道情報システ 地震情報 地震情報 テレビ局 VRML ファイル生成機能。 VRML 震災テータ 地上波テータ放送 コンテンツ管理 QoS 対応 VRML Web サーバー インターネット VRML3 ァイ )レ HTML ファイル HTML ファイル 一般クライアント 帯域情報 QOS 工ージェント 地上波データ放送 ( 地震の第一報 ) BB (Bandwidth Broker), 次世代インターネット 追加情報を要求 ロ スケーリングされた VRML データ QoS 対応 VRML クライアント 震に関する情報を得ます。 を用いて日本地図を 3 次元表示することにしました。 VRML はひろく普及しており、 VRML で記述された 震災情幸財是供システムの目標は、インターネットを通 ファイルは、 Web サーバーから HTML (HyperText じて地震に関する情報を素早く伝達することです。そのた Markup Language) ファイルを取得するのと同様な感 め、ユーサーの端末としては、テレピ局などから地上波デ 覚で、 HTTP (HyperText Transfer Procotol) により ータ放送によって地震情報を受信できるポード付きの PC 取得することができます。 を想定しています。端末の PC が地震情報の第一報を受信 すると画面ーヒにキャラクタか現れ、さらに地震に関する情 クライアント・システムについても、ユーサーがダウン 幸肋ゞ公開されている URL も表示されます。ューザーがこ ロードするだけで一勺な Web プラウサのヘルバー・ア の URL をクリックすると、インターネットを通して地 プリケーションとして起動できるようにしました。 震情報システムにアクセスし、自分にとって必要な情報を 取り出すことができる、という仕組みです。 VRML システムの問題点 システムの構築にあたっては、インターネットを利用し ているユーザーが、特別な環竟を別途用意しなくても地震 VRML では、球や立方体などの幾何 ! 判勺形状を表すノ に関する情報を容易に得られるように心がけました。そこ ード、それらの色や質感を表すノード、位置情幸肋材褓内さ で、 VRML (VirtuaI ReaIity Modeling Language) [ 1 ] れるノードなど、さまざまなノードを組み合わせて 3 次元 161 UNIX MAGAZINE 2001.1

5. UNIX MAGAZINE 2001年1月号

sy 、 T 引、ー ~ 因子分祈 ⅱ上分分新 第回彊分新 S-PLUS Linux 版 新登場 ! あた ー慥あふれる の オジェッー。テム 樹形モテ・ノレ S - PLUS は高度なデータ解析機能と豊 富なグラフィックス機能の両方を備えた 本格的なテータ解析システムです。 対話型の素早い明快な処理で利用者の 創造性を大幅に支援し、オブジェクト指 向に基づく卓越したテータハンドリング 能力により、テータの可視化・再加工・ 再解析というフィードバックループを納得 理工学、医薬学、社会科学、金融工学から教育の分野まで、 いくまで何度も繰り返すことができます。 塗国の名企業・研究機偲・大学での豊富な実績を誇ります。 特定分野ソリューションのためのアドオンモシュール 主な特長 ・・話題のウェープレット解析のための 500 以上の機能 ・ S + WAVELETS ・ ・実験計画法のための数多くの関数とグラフィックス ・ニ千以上の高度で最新の解析機能。 ( 基本演算、行列演算、 ・環境・資源エ学などで話題の本格的空間統計モジュール ・ S + SpatiaIStats ・・ 探索的データ解析、多変量解析、回帰分析、分散分析、線 ・・金融工学などで話題の G RCH モデルのために ・ S + GARCH ・・ 形モデル、時系列解析、シミュレーション、信号処理、検定、 ・・最適化問題を解決する数値計画法モジュール ・ S + NUOPT ・・ OR その他 ) ・•ArcView G 旧のデータに統計解析 ( 期 hdO Ⅳ s 版のみ ) ・数十種類のカスタマイズ自在なグラフィックス機能。 ・オブジェクト指向の s 言語での本格的なプログラミング機 能により、個別の解析システムや GUI を簡単に構築できま す。 Windows 版では OLE や ODBC も利用できます。 ・常設のトレーニングコースその他の強力なサポートでソ リューションを側面支援します。数理科学を専門とする スタッフが、個別のコンサルティングにもお応えします。 S + WAVELETS 主要 IJNIX sun 、 HP 、旧 M / x, ) 、 DECalpha (UNIX) 、 SGI 、 Linux(lntel) ※ S-PLUS は MathSoft, 旧 c. が開発しライセンスしています ※会社名および商品名は各社の商標または登録商標です。 ( 詳しい製品情報は s - PLUS ホームページ http://www.msi.co.jp/splus/を御参照ください。 ) 株式会社数王里シ / フ、アノ . 、 s-PLUS グループ S - PLUS 無料紹介セミナー定期実施中 〒 160 新宿区新宿 2-4-3 フォーシースンビル 10F 当社新宿セミナールームにて一人一台のパソコンを用いて S - PLUS を TEL. 03-3358-6681 FAX. 03-3358-1727 e-mail: splus-info@msi.COjP (URL)http://www.msi.cojp/splus/ ご説明さしあげています。お気軽にお申し込み下さい。 お問合せ : 平日 10 : 00-17 : 00 (FAX 、 e - ma ⅱは 24 時間随時 ) 資料請求 No. 003H S + SPATIALSTATS Windows Ⅳ / ndo Ⅳ S98 、 2000 、 NT 対応機種、 OS S-PLUS および ArcView のお問合せ先

6. UNIX MAGAZINE 2001年1月号

> > ストレージに 関する事実 さまざまな種類のデータを持つマルチメティア・ファイルは、ネットワークに従来型テータの 1 , 0 0 0 倍もの負荷を与えます IBM の Storage Area Network 、 Enterprise Storage Se 「 ve 「、およひファイル共有ソリューションがあれば、 ネットワークのどこへでも自由自在にコンテンツを分配させることができます ただいまー 8 M ア 0 U リ m テープ製品キャンへーン実施中 ストレージ・ソリューションについてのお問い合わせは、 詳しくは、 www.jp. ibm.com/storage/lto 旧 M アクセスセンター画 0 1 2 0 - 3 0 0 - 4 2 6 /jp/storage/solutions WWW. ibm.com @business infrastructure 旧 M アクセスセンターの受付時間月 ~ 金 9 : 30 ~ 17 : 30 ( 祝日、 6 / 17 弊社創立記念日、 12 / 30 ~ 1 / 3 を除く ) IBM 、 e-business ロゴ、 Enterprise Storage Serve 「は、 旧 M Co 甲 0 「 ation の商標。 LTO 、 Ultrium は、米国における Hewlett-Packard Company 、 IBM C0「P0「aⅱ0n 、 Seagate Technology,lnc. の商標。 資料請求 No. 011 日本アイ・ヒーエム株式会社 〒 106 ・ 8711 東京都滬区六卒木 3 - 2 -12

7. UNIX MAGAZINE 2001年1月号

企業が失ったテータの回復に費やす金額は、年間 110 億ドル以上です旧 M の Sto 「 ageA 「 eaNetwo 「 k なら、サーバー とは別のネットワークにデータを保持しているので安心です S A N インターオヘラビリティー・ラホのホームへーシ www.ibm.com/jp/stO 「 age / sa ⅲ ab 》てヨ BM のストレーシ・ソリューションをご覧くたさい > > ストレージに 関する事実 ただいまー 8 M [ TO Ultrium テープ製品キャンへーン実施中 ストレージ・ソリューションについてのお間い合わせは、 旧 M アクセスセンター画 0 1 2 0 - 3 0 0 - 4 2 6 詳しくは、 www.jp.ibm.com/storage/lto @business infrastructure /jp/storage/solutions WWW・ .ibm.com 日本アイ・ビー・エム株式会社 旧 M アクセスセンターの受付時間月 ~ 金 9 : 30 ~ 17 : 30 ( 祝日、 6 / 17 弊社創立記念日、 12 / 30 ~ 1 / 3 を除く ) * 米国企業による概算※ Storage Area Network の略。 IBM 、 e-business ロゴは、旧 M corporation の商標。 LTO 、 Ultrium は、米国における Hewlett-Packard Company 、旧 M Corporation 、 Seagate Technology,lnc. の商標 〒 106 ・ 8711 東京都港区六本木 3 - 2 -12 資料請求 No. 013

8. UNIX MAGAZINE 2001年1月号

連載 / BSD をハックする一の 図 3 sys/socket. h ( 抜粋 ) struct msghdr { void socklen_t int socklen_t void int Struct iovec *msg—name ; msg—namelen ; *msg_10V ; msg—flags ; msg—controllen; *msg—control ; msg—iovlen ; optional address * / size of address * / / * flags 0 Ⅱ received message * / / * ancillary data buffer len * / / * ancillary data, see belo * / / * # elements in msg—iov * / / * scatter/gather array * / * Header fO て ancillary data objects in msg—control buffer. * Used for additional information with/about a datagram * not expressible by flags. The format is a sequence * of message elements headed by cmsghdr structures . struct cmsghdr { socklen_t int int cmsg— cmsg— cmsg— len; 1eve1; type ; data ロ ; * / / * data byte count , including hdr * / / * originating protocol * / / * protocol—specific type * / / * followed by u-char cmsg- で、以降の説明はいすれにも適用できるはずです。 Tru64 UNIX では、マクロの整が多少必要でした。 データ構造と条件 UNIX MAGAZINE 2001.1 呼びます。 3 従来の UNIX ドメインのことを、 4.4BSD では LOCAL ドメインと 必要があります。 msg-iov と msg-iovlen は、送受するデ 使用します。接続していないソケットの場合には指定する と msg- namelen は、データの送り先を指定するために ぎないようにするために導入されたものです。 msg-name struct msghdr はジステムコールの引数の数か増えす include/sys/socket. h の抜粋を示します。 usr msghdr がなかなか面倒な構造体です。図 3 に s はソケットのファイル・ディスクリプタですが、 struct int flags) ; ssize—t recvmsg(int s, struct msghdr *msg, *msg , int flags) ; ssize—t sendmsg(int s , const struct msghdr sendmsg と recvmsg の引数は以下のとおりです。 れません。 ルは sendmsg/recvmsg です。 send や sendto では送 LOCAL ドメイン 3 のソケットで、使用するシステムコー ファイル・ディスクリプタを送ることカきるのは PF- ータ ( のデータバッフア領域 ) を表します。 msg-control と msg-controllen は、送受する補助データです。 msg- flags はフラグですが、 こでは不要なので説明は省略し ます。 補助データは可変長の補助データブロックか馥数里な ったもので、そのう頁 12 バイト ( i386 の場合 ) は struct cmsghdr で定義される形式に従ったものです。ここでは、 補助データブロックが 1 個で足りるので、その場合だけ説 明します。 ちなみに、 4.3BSD の日罸には補助データの部分が、 caddr—t msg—accrights ; / * access rights sent/received * / int msg—accrightslen; となっていて、 msg-flags はありませんでした。実際に送 受できるのはファイル・ディスクリプタであるにもかかわ らず、、、 access rights" というコメントが付いています。 4.4BSD で、 LOCAL ドメイン ( ファイル・ディスク リプタが送受できる ) プロトコル以外の通イ言プロトコルで もそれぞれの補助データ ( プロトコルごとに決まっていま す ) が送受できるように、 struct cmsghdr が導入されま した。 補助データは、データ長 (struct cmsghdr を含む ) 、プ ロトコルレベル、タイプ、データ ( 可変長 ) から構成され 71

9. UNIX MAGAZINE 2001年1月号

PC WeaseI 2000 I (load image) ファームウェアを書き込みます。 I を押して、ますプー トローダに登録する名前を半角 32 文字以内で入力します。 次に、 1 ~ 4 のどのパーティションに書き込むカ寸旨定しま す。ここで指定すると、すぐにそのパーティションは消さ れてしまうので、尺は慎重におこなってください。 パーティション内のデータの消去か終ると > という プロンプトが表示され、データ転送待ち状態になります。 PC Weasel 2000 は、データ転送に S Record フォー マットのデータを使用します。これを 1 行ごとに送信すれ ばいいのですが、 1 行送信したあとは次のプロンプトが出 るまで待たなければならす、かなり時間がかかります。ま た、普通にコピー & ペーストするとすぐにオーバーフロー してしまうので工夫が必要です。 Tera Term Pro を使用している場合、 Setup の Se- rial port メニュー内にある Transmit delay の値を、 0 msec/line から 500 msec/line に変更しておきます。 こうすることで、 1 行ぶんのデータを送り終えてから次の 行を送り始めるまでに 500 ミリ秒侍つようになります。 msec/char に関しては 0 のままで間題ありませんでした。 間違ってファームウェアを消去してしまったときなど に、 FTP サーバーから取得したファームウェアを書き込 む手順を紹介します。 1. あらかじめ、 ftp://ftp.realweasel.com/pub/realwe asel/ から該当する ) 宿ファイルを取得し、展開してお きます。 2. Tera Term Pro の設定を、一記のように変更します。 3. PC WeaseI 2000 を、前述のようなデータ庫幻当寺ちで、 フロンフトが出ている状態にします。 4. ファームウェアのファイルをメモ帳などのテキスト工 デイタで開きます。そして、すべてを選択してコピー します。 5. Tera Term Pro のウインドウ上でペーストを実行し ます。 これでデータを書き込み始めます。最後に OK が出て くれば成功です。 OK が出なければ書き込まれていないの で、 Transmit delay の値を大きめにとってやり直してく ださい。または、 Baud rate を 9 , 600bps に設疋すると うまくいくかもしれません。 UNIX MAGAZINE 2001.1 k (Program Keyboard Flash) ファームウェアは最大 4 つまで書き込めますが、それ とは別にキーポード・コントロール用のファームウェア を書き込むことができます。 FTP サーバーからファーム ウェアをダウンロードした場合、おそらくキーポード用の ファームウェアも含まれているので、忘れすに書き換えて おく必要があります。こちらは 1 つしか書き込めません。 k を押すと、キーポード用のファームウェアを書き換えて よいかどうか訊かれます。 n を押すと書換えをおこなわす にメニューに戻ります。 y を押すと、 1 コマンドと同様に フロンプトカ咄るので、さきほどと同じようにデータを転 送してください。最後に OK カ咄たら中幻終了です。 1 コマンド、 k コマンドを実行するために Tera Term Pro の msec/line を変更した場合は、書込みか終ったら かならす 0 に戻しておいてください。 d (Change Default partition PC の起重加寺にデフォルトて使用するファームウェアを 〕尺します。書き込まれているファームウェアか複数ある ときに、デフォルトで使用するファームウェアをここて決 めます。 1 ~ 4 の値を指定します。 これらのコマンドを使用するのは、間違ってファーム ウェアを消してしまい、このメニューしか表示されなく なったときだけだと思います。そのような場合は、 FTP サーバーからファームウェアをダウンロードし、上記の手 順を参考にファームウェアを書き込めは、ふたたび使える ようになると思います。 PC Weasel 2000 は、 PC サーバーをシリアル端末か ら操作できるようにする、なかなカイ更利なハードウェアで す。使うために特別なデバイスドライバが必要になるわけ でもないので、手軽に利用できます。 便利であるだけに、 ・ ISA ではなく PCI のカードであれば・・ ・ MDA ではなく VGA に対応していれは・・ という点か残念です ( 両者とも、コストカ墹題になってく るのは事実ですか ) 。 115

10. UNIX MAGAZINE 2001年1月号

連載 / BSD をハックする一の 図 4 週言プログラム ( 抜粋 ) #include く sys/types . h> #include く sys/socket . h> #include く sys/un. h> pass—stdio(const int sock) struct msghdr mhdr ; struct { bzero(&cmsg, sizeof(cmsg) ) ; mhdr. msg—control= &cmsg; bzero(&mhdr, sizeof(mhdr) ) ; }cmsg; int fdlist [ 4 ] ; struct cmsghdr hdr ; / * Ⅱ 0 padding mhdr. msg—controllen= cmsg. hdr ・ cmsg—len を SOL-SOCKET に、タイプを SCM-RIGHTS にし ます。ファイル・ディスクリプタを送るときは、レベル return sendmsg(sock, &mhdr, 0 ) ; fileno(stdin) ; cmsg. fdlist [ 1 ] fileno(stdout) ; cmsg. fdlist [ 0 ] cmsg. hdr. cmsg-type = SCM-RIGHTS ; SOL_SOCKET ; cmsg. hdr. cmsg—level = sizeof(struct cmsghdr) + sizeof (int)*2; 具体例 . 送信 ます。 あとは struct msgbuf を sendmsg システムコールに には同凵直が入ります。 の長さフィーノレドと、 struct msghdr の msg_controllen 補助データは 1 プロックだけなので、 struct cmsghdr sizeof (struct cmsghdr) + sizeof (int)*2 下のようになります。 ディスクリプタを 2 つ送るので、補助データのサイズは以 イスクリプタの配列か読いたものです。ここではファイル・ 補助データは、 struct cmsghdr の後ろにファイル・デ すべて 0 です。 ないので、 struct msghdr のツ曰頁の 4 つのフィールドは この例では宛先アドレスの指定は不要で、データも送ら す。引数 s 。 ck は、 UNIX ドメインのソケットとします。 ル・プログラムです。この例では標準入出力を送っていま 図 4 は、ファイル・ディスクリプタを送る側のサンフ 72 渡すだけです。 図 5 言プログラム ( 抜粋 ) #include く sys/types . h> #include く sys/socket . h> #include く sys/uio . h> #include く sys/un. h> #define MAXFD 10 int * sendfd_test (const int sock) char buf [ 1024 ] ; int n,nfd; struct msghdr mhdr ; struct iovec iov[l] ; static struct { struct cmsghdr hdr; / * Ⅱ 0 padding * / int fdlist [MAXFD + 1] ; }cmsg; bzero (&mhdr , sizeof (mhdr) ) ; mhdr. msg_iov=iov; mhdr. msg—iovlen=l ; mhdr. msg—control= &cmsg; sizeof (cmsg) ; mhdr. msg—controllen= iov [ 0 ] . iov_base=buf ; iov[0] . iov_len=sizeof (buf) ; bzero(&cmsg,sizeof (cmsg) ) ; n=recvmsg(sock , &mhdr , 0 ) ; if ( Ⅱく 0 Ⅱ mhdr ・ msg_controllen く sizeof (struct cmsghdr) ) return NULL ; nfd= (cmsg. hdr. cmsg_len sizeof(struct cmsghdr) ) / sizeof(int) ; cmsg. fdlist Cnfd] = return cmsg. fdlist ; 具体例 : 受信 オープンファイル・ディスクリプタを受け取る側の例を 図 5 に示します。 データと補助データの各受信バッフア領域と長さを msghdr に設定します。受信側でも相手のアドレスを指定 する必要はありません。 recvmsg でメッセージを受け取ったら、ます補助デー タを受け取ったかどうか msg-controllen を調べます。補 助データがない場合、 msg-control は書き換えられないの で、いきなり struct cmsghdr の長さフィールドを調べ てはいけません。 続いて、この例では省略していますが、届いた補助デー タがファイル・ディスクリプタか別のものかを石忍すべき です。また、この例では送信側からデータはいっさい送ら UNIX MAGAZINE 2001 ユ