タグ

プロセス間通信に関するka2yanのブックマーク (5)

  • Example of UNIX domain program

    UNIXドメインのプロセス間通信プログラムの例 いきなり、ネットワークを使って離れたマシン間で通信を行う (INETドメインのソケットを使う)ようなプログラムを書くのはちょっと難しいので、 まずは一つのマシンの中で起動されているプロセス同士で通信を 行う(UNIXドメインのソケットを使う)方法を説明します。 では、早速プロセス間通信を行うプログラムを書いてみましょう。 プロセス間通信を行うには当然、メッセージを送信する側と受信する側の二つのプログラム を書く必要があります。 まず最初は簡単なサーバークライアント型のプログラムを作ってみましょう。 クライアント側ではユーザーからのキー入力を受け付け、入力された文字列をサーバーに 送ります。サーバーは、受け取った文字列のアルファベットの部分を大文字に変換して クライアントに送り返します。 サーバープログラムの例(server.c) クライアント

  • Posixメッセージキュー - s-kita’s blog

    Introductionメッセージキューは、メッセージのリンク構造と考えることが出来る 各メッセージはレコードであり、各メッセージには送信側が指定した優先度が付いている。 メッセージの書き込みに際しては、そのキューにおいて何らかのプロセスがメッセージの到着を待っていることが要求されない。(パイプと対照的) メッセージキューはパイプと異なり、カーネル持続性(kernel persistence)を持つ。(パイプ、FIFOでは、それらが最後にクローズされる際に、残っているデータは破棄される。) PosixメッセージキューとSystem V メッセージキューの違いPosixメッセージキューからの読み出しは、常に最も高い優先度の最も古いメッセージを返す。System V メッセージキューでは、任意の優先度のメッセージを読み出すことが出来る。 Posixメッセージキューでは、空のキューにメッセージが

    Posixメッセージキュー - s-kita’s blog
    ka2yan
    ka2yan 2009/02/17
    メッセージキュー(POSIX)
  • コンピューター:C言語講座:FIFO(名前付きパイプ)について

    コンピューター:C言語講座:FIFO(名前付きパイプ)について 概要 FIFOは来、First In First Outというデータ形式の名称で、はじめに入ったデータがはじめに取り出されるという意味で、STACK形式のように最後に入ったデータがはじめに取り出されるのに対比するものですが、ここではプロセス間の通信に使用するFIFOを取り上げます。 TCP/IPプログラムでプロセス間で通信を行なう説明を行ないましたし、fork,exec,pipeでも同様にプロセス間で通信を行なえました。今回の話題のFIFOはPIPEによく似た感じのものですが、パイプは親があらかじめ準備してから子を起動して通信するのですが、FIFOはお互いに勝手に通信をはじめることが出来ます。ファイルのように名前をつけたパイプというイメージで、実際にUNIXではファイルのようにディレクトリ中に作成します。したがって、FIFO

  • スレッド間通信のオーバーヘッドを比較する - Blog by Sadayuki Furuhashi

    pthread_系の関数は mutex か cond しか待てないが、select/poll/epoll はファイルディスクリプタしか待てないので、両方待ちたいときに困る。 解決方法はいろいろあると思いますが、私の思いつく範囲では以下の4つ。 selectで待ち、シグナルで割り込む ファイルディスクリプタはselectで待つ。他のイベントはいったんキューに入れておき、シグナルを発生させてselectを中断させる。たしかlighttpdはこの方式だったはず。ただlighttpdはシングルスレッドなのでキューは使っていなかったような(うろ覚え) selectで待ち、パイプで割り込む selectで待つのだが、その中にpipe(2)で作ったパイプを1つわせておく。ファイルディスクリプタ以外のイベントはいったんキューに入れておき、パイプに1バイト書き込んでselectを中断させる。 select

    スレッド間通信のオーバーヘッドを比較する - Blog by Sadayuki Furuhashi
  • 仮想デバイスドライバを利用したプロセス間通信について : tutorialog

    仮想デバイスドライバを利用したプロセス間通信について September 11, 2006 Posted by butcher in : C, Operating System , trackback 仮想デバイスドライバを利用したプロセス間通信について説明します。といってもよくわからないと思うので、ちゃんと説明します。 Unixでプロセス間通信というと、ソケットを使ったもの、パイプを使ったもの、共有メモリを使ったもの等がありますが、それぞれ長所・短所があると思います。 ものすごく簡単に言うと、 ソケットでは、 複数マシン間での通信が可能 通信処理のオーバーヘッドが大きい(コネクション開始・終了処理も含め) パイプでは、 ソケットより通信処理のオーバーヘッドが少ない 親子関係のプロセスに限定される 共有メモリでは、 シンプルで高速 書き込み・読み取りの同期をとるのが難しい 等が

  • 1