高级I/O函数——pipe、dup、dup2、sendfile、mmap、munmap、splice、fcntl

本文介绍了Linux中的一些高级I/O函数,包括pipe(创建管道)、dup/dup2(复制文件描述符)、sendfile(高效数据传输)、mmap/munmap(内存映射文件)以及splice(零拷贝数据传输)和fcntl(文件描述符控制)。这些函数在系统编程中用于提高效率和优化资源使用,例如sendfile避免了用户态和内核态之间的数据拷贝,mmap允许直接通过内存访问文件,fcntl则用于设置文件描述符的各种属性。
摘要由CSDN通过智能技术生成

一、创建文件描述符的函数

1、pipe函数(创建管道)

(1)pipe函数的定义:

    

#include<unistd.h>
int pipe(int fd[2]);

 

     通过pipe函数创建的这两个文件描述符fd[0],fd[1]分别构成管道的两端,并且fd[1]只能用于往管道中写数据,fd[0]只能从管道中读取数据,不能反过来使用。默认情况下,这一对文件描述符都是阻塞的。如果管道的写端文件描述符fd[1]的引用计数是0,那就证明没有任何进程往管道中写数据,则针对管道的读端文件描述符fd[0]的操作将返回0,即读取到了文件结束标记EOF。反之,如果管道的读端文件描述符fd[0]的引用计数为0,则代表没有任何进程从管道中读取数据,则针对管道的写端文件描述符fd[1]的write操作将失败,并引发SIGPIPE信号。

(2)请问管道内部传输的数据数据是什么形式?

     字节流

(3)请问该字节流跟TCP字节流的概念相同吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值