Linuxカーネルのプロセス間通信について調べてみた

概要

詳解Linuxカーネル読書会で詳解Linuxカーネルの第19章プロセス間通信を読みつつ、kernel 4.4.0のソースを眺めたのでその記録を残す。

Pipe

pipeのシステムコール定義

以下のようにsys_pipeが定義されて、

そのsys_pipeから、sys_pipe2が呼び出される。

sys_pipe2から呼び出される__do_pipe_flags関数がpipe作成の本体。

create_pipe_files内で以下の様な処理が行われるようである。

  1. inode確保はget_pipe_inode関数で行われる。
  2. dentryの割当
  3. alloc_fileで書き込み用ファイルの割当
  4. alloc_fileで読み込み用ファイルの割当

名前付きパイプの場合は、openを呼ぶとfifo_openが実行される。パイプのreadとwriteはそれぞれpipe_readpipe_writeで実装されている。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です