タグ

ipcに関するi_matsuiのブックマーク (5)

  • 名前付きパイプの使い方の小ネタ - ローファイ日記

    まだまだ消費増税に対抗するため、無理やりネタを紡ぎ出す。 named pipe、「名前付きパイプ」の簡単な使い方を残しておく。 プロセス間通信 プロセスの間でなにかしらのデータのやり取りをすることをプロセス間通信(Inter Process Communication)と呼ぶ。たとえばLinuxでは以下のような方法がある。 シグナル パイプ、FIFO SysV IPC(メッセージキュー、セマフォ、共有メモリ) POSIX IPC(同上) UNIXドメインソケット インターネットドメインソケット(いわゆるTCP/UDPなどのソケット) この分類は「Linuxプログラミングインターフェース」を参考にした。 www.oreilly.co.jp IPCで最も手軽なのはパイプの作成で、fork元でpipe()などを用いて読み出し専用/書き込み専用の1組のパイプを作り、fork先でもそのfile de

    名前付きパイプの使い方の小ネタ - ローファイ日記
  • プロセス間通信 ~共有メモリ~ - Qiita

    目的 プロセス間通信(IPC)のうち「共有メモリ」について調べたことを備忘録としてまとめました。 プロセス間通信のやり方のまとめとしては以下の記事がとても参考になりました。 コードに関してもかなり参考にさせていただきました。 Linuxのプロセス間通信 (Qiita) ここでの環境は以下の通りです。コードはC++で書いています。 MacOS 10.13.4 gcc 7.3.0 不備等あれば指摘していただけると幸いです。 [追記] 以下で解説しているのはSystemVの共有メモリで、POSIXの共有メモリも存在するそうです。 解説 共有メモリとは Wikipediaによると「共有メモリはプログラム間でデータをやりとりする効率的手段である。」「1つのプロセスがメモリ上に他のプロセスからもアクセスできる領域を作成する。」とのことです。 1つのメモリ領域を使ってデータをやりとりするのは処理としてか

    プロセス間通信 ~共有メモリ~ - Qiita
  • Android NdkBinderについて

    Android NdkBinderについて ※稿は2019年6月に書いて放置していたものを今になって発掘して公開しているので、もしかしたら古い記述がまだ残っているかもしれない(一応ひと通り読み直して確認したつもり)。何かおかしそうなところがあったらコメント等で教えてください。 NdkBinderとは、Androidのサービスでクライアントと接続するためのBinderをAndroid NDKを使ってCで実装するためのAPIだ。今回はこのAPIを紹介していこうと思う。 Android API Level 29で初めて追加されたライブラリで、Android NDK r19には存在しない。r20で追加されたようだ。libndk_binder.soにリンクするにはcompileSdkVersion 29にする必要がある(ndk_binderの利用が必須ならminSdkVersion 29である)。

    Android NdkBinderについて
  • プロセス間での大量データ交換について調べてみた | 車輪の再発見みたいな?

    とある事情で、Androidのプロセス間を数メガ〜200メガバイト/秒ぐらいでデータをやりとりする方法を調べてみた。 プロセス間通信 Androidでプロセス間通信といえば、 Intent 一番簡単だけど、単発/低頻度で少量のデータのやり取りしか無理 Messenger(+Handler) 単発/低頻度で少量のデータのやり取りしか無理 Binderを使う(Javaからならサービス経由のやりとりがBinderを使っているみたいです) 数百〜数千バイト程度を高速にやりとり可能らしい・・・ でも実際に試すと、数十〜数百キロバイトの時点で遅延が大きすぎてだめでした。高頻度なら実用的にはせいぜい百数十バイト程度までにしといたほうが良さそうでした。 共有メモリ(Ashmem=Anonymous Shared Memory) これは別途後で。 Unixドメインソケット 共有メモリが使えたのと、最終的にも

    プロセス間での大量データ交換について調べてみた | 車輪の再発見みたいな?
  • KMC Staff Blog:AndroidのBinderによるプロセス間のメソッド呼び出し(メモ)

    2011年03月17日 AndroidのBinderによるプロセス間のメソッド呼び出し(メモ) Androidのシステムでは同時にたくさんのプロセスでJava言語で書かれたプログラムがDalvikVMによって動いています。intentを発行して別のプロセスで処理を実行できることがAndroidでのプログラミングの大きな強みです。 このようなプロセスをまたがったメソッド呼び出しは下位レベルではBinderという技術が使われているのですが、私はいままでそれがぼんやりとしか理解できていませんでした。 ソースコードを無理やり追いかけたら、わかりかけてきたのでメモを残します。 Androidのアプリケーションプログラムから別のアプリケーションを起動するにはIntentを発行すればよいのですが、それには android.app.Activity#startActivity メソッドを使用します。 その

  • 1