进程通信-有名管道FIFO

FIFO:有名管道
原型:int mkfifo(const char *pathname,mode_t mode);头文件:sys/types.h和sys/stat.h
参数:创建的管道名字和操作权限
说明:可以在任意两个进程中通信
返回值:成功则返回0,否则返回-1,错误原因存于errno中
说明:1.管道有大小限制(4096B) 在写入数据之前,会先判断管道大小是否足够,若不够就不会写入 
            写满后只能等到有数据被读出才能继续写入.
         2.read读数据是一定要读到数据才能返回的,否则就会等待,全部进程中必须有一个reader
            是没有关闭的,才能write进数据.
         3.writer设置成非阻塞,必须先运行readr,否则写端会受到警告No such device or address 
         4.open(fifo, O_RDONLY);open(fifo, O_WRONLY);这种是阻塞模式,不管先运行哪一个都会
            等另一个进程open的时候才能open结束(,两个进程间?非父子进程)

         5.open(fifo,O_RDONLY|O_NONBLOCK);open(fifo,O_WRONLY|O_NONBLOCK);非阻塞模式,

           前者不用等写打开就可以open结束,但是先运行后者就不可以:说明3

父子进程间测试:

#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>
int main(void)
{
char buf[80];
int fd;
unlink(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值