微前端架构如何改变企业的开发模式与效率提升
755
2022-09-23
UNIX环境下,如何实现dup2函数,不允许调用fcntl?
这是unix编程环境第三章的一个题目,前段时间翻了下,发现这个题目还有点小意思,而且网上也没什么全面的答案。
先补充几个概念:
文件描述符:内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。(百度百科)
内核为每个进程维护一张进程表项,每一行代表一个打开的文件,包含两个数据:文件描述符、指向文件表的指针。进程为每个打开的文件维护一张文件表,文件表记录了文件一些基本信息,以及指向文件实体的指针,大体如下图:
当我们打开一个文件的时候,内核会返回一个对应的文件描述符(通常从3开始递增,0、1、2分别代表STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO);
int dup(int fd);
复制fd描述符,并且是当前可用的最小描述符
int dup2(int fd1,int fd2);
复制fd1的描述符,并且其值为fd2
题目要做的就是实现dup2,但不能调用fcntl函数
代码如下
#include
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~