关于进程间的通信

进程间的通信:管道    信号量   消息队列   socket套接字

管道:线性字节数组,类似文件,使用文件读写的方式进行访问

管道分为:

有名管道:fifio     相当于创建了一个文件,这个文件只要有权限的,所有人都能来访问(不相关的进程也能进行数据的交换)

无名管道:pipe     只能由父子进程进行使用,返回两个文件描述符

创建管道时系统调用popen()或者pipe(),popen需要提供一个目标进程作为参数,然后再调用该函数的进程和目标进程之间创建一个管道,是有名管道。

管道和记名管道不是所有操作系统都支持,主要支持管道通信方式的是UNIX和类UNIX(如Linux的操作系统)

同一主机,一个管道可以被多个进程打开,多个管道之间互不影响,服务器端可以创建一个管道文件,然后,客户端的进程可以通过open;来打开服务器的管道文件。

管道的一个特点是,使用管道的两个线程之间必须存在某种关系,例如:使用popen()需要提供另一端进程的文件名,使用pipe()两个进程必须隶属于父子进程。

信号量:用来在进程的通信时表示现在进行到那个状态了,而使另外一个进程进行下面的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值