• ベストアンサー

プロセス間通信について

こんばんは、皆さん。 自分の意識の中では、プロセス間通信とは「ソケット通信」の事を指していると 思っており、その上でC言語で作成する必要があって、それについての参考になるような サイトや本を検索しているのですが、これ!という決め手なものが見つかっていません。 またプロセス間通信には「パイプインタフェース」!?というのもあるようで、 ソケット通信とどう違うのか、ちょっと混乱してきております。 プロセス間通信について分かりやすいお勧め本を教えていただけませんか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

>>プロセス間通信について分かりやすいお勧め本を教えていただけませんか。 ちょっと高価ですが、この手のプログラミングは、 UNIXネットワークプログラミング〈Vol.1〉〈Vol.II〉 W.リチャード スティーヴンス (著) という書籍を参照されている方が同業さんにも多いようです。私は旧版の1冊になっている本を、「高いなあ、でもいつか使う日があるだろう」なんて思って購入していましたが、ここ数年はお世話になりっぱなしです。

SFdaisuki
質問者

お礼

この本を昨日探してみました。 Amazonならすぐ出てくるのですが、やはり一度は内容を見てみないと、自分に合っているのか分からないので。 で、閉店前に入った店でようやく見つけましたが、お値段はさすがにお高いですね。 でも内容的にはじっくり腰をすえて読むことの出来るもので、説明についても それほど難易度は高いとは思いませんでした。 (たぶん、2~3度は繰り返して読まないといけないかも知れませんが) この先の仕事を考えれば、値段は気にする程ものではないのかも知れませんが、 もっとC言語のサンプルが沢山あるといいな、とは思いました。 (時間があまりなかった立ち読みだったので、見間違えているかも知れません。  その場合は申し訳ありません。) ありがとうございます。

その他の回答 (2)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.3

がると申します。 んと…どんなOSを使ってるかにもよるのですが(このあたりまでくるとOS依存が色々と)。 UNIX系であれば、IPC(プロセス間通信、の事です)といえば ・ソケット ・メッセージ ・パイプ ・セマフォ ・共有メモリ あたりがあろうかと思います。 良書は#2さんが紹介されているので。 以上ちょいと蛇足ですが。

SFdaisuki
質問者

お礼

済みません、対象マシンを書いていませんでした。 動作させるマシンはLinuxで、プロセス自身はC言語で開発する予定です。 セマフォ/共有メモリは馴染みが無い言葉なのですが、別で言葉で聴いているかも知れません。 プロセス通信と1口に言っても色々あるのですね。 下記の書籍にも書いてあるのでしょうか。 (そこまで確認出来ませんでした。。) ありがとうございます。

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

> プロセス間通信とは「ソケット通信」の事を指していると思っており、 この認識は正確ではありません。 「ソケット通信でもプロセス間通信は可能」というだけです。 ソケット通信以外のプロセス間通信は存在しますし、可能です。 > またプロセス間通信には「パイプインタフェース」!?というのもあるようで、 > ソケット通信とどう違うのか、ちょっと混乱してきております。 ソケット通信は、ネットワーク上の通信インターフェイスとというイメージが強いので、 単にプロセス間通信というとパイプを思い浮かべる人の方が多いかも。 ストリーム指向の通信方式で、多少ソケットよりお手軽です。 そのほかにも、スロットとか、色々なプロセス間通信方式があります。

SFdaisuki
質問者

お礼

勘違いをしていました。 プロトコル通信=ソケット通信かと。 ほかにも色々あるのですね。 パイプの方が多少、処理が軽いという認識で合っているでしょうか? ちょっと調べてみます。 ありがとうございます。

関連するQ&A

  • サーバプロセスとクライアントプロセスの通信

    サーバプロセスとクライアントプロセスの通信がどのように行われているのか確認させてください。 現在、以下の認識でいます。 (1)TCPコネクション  サーバ側ポート番号【23】と、それぞれのクライアント側ポート番号【****】との間に確立する。   (2)通信処理  クライアント側のプロセスAは、サーバ側のプロセスA(子)  クライアント側のプロセスBは、サーバ側のプロセスB(子)  クライアント側のプロセスCは、サーバ側のプロセスC(子)  との間で通信を行う。 ※添付の図も参照ください。 認識に相違ないでしょうか。 サーバプロセスとクライアントプロセスの通信を行う際、プロセス間(ポート間?)の通信には、IPアドレスとポート番号を組み合わせたソケットを用いるため、サーバ側ではソケット【192.168.0.1:23】を1個作成し、クライアント側ではソケット【192.168.0.2:****】をプロセス分作成すると考えています。 このとき、クライアントプロセスAはサーバプロセスA(子)と通信を行いますが、サーバ側で作成されているソケットは1つであるため、どの子プロセスに対してデータをせばいいのか判別できないのではないかと考えています。 ※クライアントプロセス(A、B、C)はソケット(サーバ側)【192.168.0.1:23】に対して送信されるため。 上記について、何らかの仕組みがあるのでしょうか。 よろしくお願いします。

  • .NETでのプロセス間通信

    初めまして。皆様の知恵をお借りしたく質問させていただきます。 現在VC++.NET2003を使用してのプロセス間通信を行うアプリを作成しています。 プロジェクトはWindowsフォームアプリケーション(.NET)です。 そのときアドレスをパラメータで送れる通信方法を教えていただきたいのです。 とりあえず自分で調べて出てきた通信方法を挙げます。 1.ソケット(TcpListenerとTcpClientを使用のもの) 2.メッセージキュー(MessageQueueを使用のもの) 3.イベント(CEventを使用。.NETで作成できるか不明) 4.メッセージウインド(.NETで作成できるか不明) 5.パイプ(名前付きパイプを使用のもの。.NETで作成できるか不明) 以上のものはアドレスをパラメータとして送れるものでしょうか? 上記1,2に関してはアドレスを送るのではなく単純なバイナリデータですが .NETを使用して作成出来ました。 が、3,4に関しては作成方法がわからず中断しております。 5に関してはまだ調べたばかりでサンプルも作成していません。 また他にもあるようでしたらお教え下さい。 お願い致します。

  • c言語にてソケット通信

    linux環境のc言語にてソケット通信のプログラムを作成しています。 UDP通信にてヘッダを書き換える必要があるためrawソケットを使用し、複数ある ネットワークインターフェース(eth0、eth1など)を引数にして使用したいのですが、どうしたら使い分けできるので しょうか。

  • パイプを用いたプロセス間通信について

    VC++2005にて下記サイトを参考にパイプを用いたプロセス間通信を行うプログラムを作成しています。 猫でもわかるプログラミング (1)第242章 匿名パイプ(サーバー側) http://www.kumei.ne.jp/c_lang/sdk3/sdk_242.htm (2)第243章 匿名パイプ(クライアント側) http://www.kumei.ne.jp/c_lang/sdk3/sdk_243.htm サーバー側からWriteFileでデータを送信する際に、 char型配列に入ったバッファデータ「szBuf」を送信し、 クライアント側のReadFileで同じく「szBuf」で受信していますが、 構造体Data ================== typedef TypeData{ int a; int b; char c[10]; }Data; ================== のオブジェクトdataを送信するには、WriteFile及びReadFileの箇所は どのように実装すれば良いのでしょうか? MSDNにはWriteFileの引数の型はLPCVOIDとあるため、 可能だと思うのですが。。。 もし解決策をご存知の方おられましたら、ご教示お願い致します。

  • Linux C++ でマルチプロセスプログラミング

    Cent OS + Eclipse CDT で C++ プログラミングをはじめたばかりです。 マルチプロセスのアプリを作成したいのですが、C++ での子プロセス作成や その制御方法についてネットで探しても、C言語(の文法)でのやり方は見つかるのですが、 C++でのやりかたは見つかりませんでした。 (C言語を包含してるんだからC言語の文法でもいいじゃんとは言わないでください。。) C++でも fork して子プロセスを作成するということのようですが、 実際のサンプルソースなどが載っているサイトや、 Linux C++ で参考になる書籍があったら教えて欲しいと思います。 よろしくおねがいします。

  • C言語での通信システムの作成

    はじめまして。 C言語で通信システム(信号発生から、受信まで)を作成しシミュレーションを行いたいと考えています。C言語はあまり得意でないので、C言語のソースコードが載っている様な参考になる本や、Web siteをご存知の方がいらしたら教えてください。よろしくお願いします。

  • .netでソケット通信

    .net(C++)をベースにソケット通信の設計を進めています。 .netでソケット通信を実装する場合、Socketクラスが用意されていますが、 これはWindowsソケットインターフェイス(Winsock)なのでしょうか。 そうであれば、同時に64個のイベントオブジェクトまでしか待つことができない 制限が存在するのでしょうか。 お願いします。

  • 異なる言語間でのソケット通信について

    簡単なネットワークプログラムを作成して、ソケット通信の確認をしています。 クライアントとサーバが両方ともにC++の場合と、両方ともにJavaの場合で、正常に通信が行われていることは確認しました。 そこで、クライアントでC++のプログラムを動かし、サーバでJavaのプログラムを動かしてみたのですが、うまくいきませんでした。 (ポート番号を合わせたので、相互接続は出来てるみたいですが、データが渡ってきませんでした。OSはクライアント/サーバともに、Windowsです。) 言語が異なる場合の、ソケット通信について良いサイトをご存知でしたら、教えていただけないでしょうか?

    • ベストアンサー
    • Java
  • サーバの機能とソケット

    パイプとソケットについてですが、 パイプ:プロセス間のコネクションを設定して行う通信 ソケット:ネットワーク上でコネクションを設定して行う通信 という認識なのですが、これはあってますか? あと、サーバの機能とソケット番号はどのような対応付けが必要なのか教えて下さい。

  • JAVAでノンブロッキングモードでの通信はできますか。

    このたび、JAVAでTCP/IPプロトコルの通信を行うことになりました。今までは、UNIXでC言語で開発してきたのですが、その場合は、ノンブロッキングモードを使用してプログラムを作成しました。JAVAで、ノンブロッキングモードで通信することは、可能なのでしょうか。又、可能であれば、その方法は、ソケットオプションの設定で行うのでしょうか。

    • ベストアンサー
    • Java

専門家に質問してみよう