日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux进程通信之管道

發(fā)布時間:2023/11/30 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux进程通信之管道 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

進(jìn)程間完成數(shù)據(jù)傳遞需要借助操作系統(tǒng)提供的特殊的方法,比如:文件、管道、信號、共享內(nèi)存、消息隊列、套接字、命名管道等。但現(xiàn)在常用的進(jìn)程間通信方式有:

管道 – 使用最簡單

?????? pipe

?????? 管道一般讀寫行為

FIFO(有名管道):

?????? 用于非血緣關(guān)系進(jìn)程間通信

信號 – 開銷最小

共享映射區(qū) – 無血緣關(guān)系

?????? nmap

?????? 函數(shù)的參數(shù)使用注意事項

?????? 用于非血緣關(guān)系進(jìn)程間的通信

本地套接字 – 最穩(wěn)定

?

Linux下其中文件類型

-?????? 文件

d???? 目錄

l ??? 符號鏈接

偽文件:

s????? 套接字

b???? 塊設(shè)備

c???? 字符設(shè)備

p???? 管道

其中文件、目錄、符號鏈接是占用磁盤存儲的。

?

管道:

  • 本質(zhì)是一個偽文件
  • ?由兩個文件描述符引進(jìn),一個表示讀端,一個表示寫端。
  • 規(guī)定數(shù)據(jù)從管道的寫端流入管道,從讀端流出。
  • ?

    管道的原理:管道實為內(nèi)核使用環(huán)形隊列機(jī)制,借助內(nèi)核緩沖區(qū)(4K)實現(xiàn)。

    管道的局限性:

  • 數(shù)據(jù)自己讀不能自己寫
  • 數(shù)據(jù)一旦被讀走,就不在管道中存在,不可反復(fù)讀取。
  • 由于管道采用半雙工方式,因此,數(shù)據(jù)只能在一個方向上流動。
  • 只能在由公共祖先的進(jìn)程間使用管道。
  • ?

    pipe()函數(shù)實現(xiàn)管道通信:

    /*** pipe.c ***/ #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<string.h>int main() {int fd[2];pid_t pid;int ret = pipe(fd);if(-1 == ret){perror("pipe error:");exit(1);}pid = fork();if(-1 == pid){perror("pipe error:");exit(1);}else if(0 == pid) //son process read {close(fd[1]);char buf[1024];ret = read(fd[0],buf,sizeof(buf));if(0 == ret){printf("ret = %d\n",ret);}write(STDOUT_FILENO,buf,ret);}else //father process write {sleep(1);close(fd[0]);write(fd[1],"hello pipe\n",strlen("hello pipe\n"));}return 0; }

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/wanghao-boke/p/11311586.html

    總結(jié)

    以上是生活随笔為你收集整理的Linux进程通信之管道的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。