魏公村网站建设,如何提高网站收录数,建站公司咨询,宁波seo关键词优化外包1.重定向 文件描述符对应的分配规则是什么? 尝试用这个代码 关闭0,1#xff0c;2文件描述符#xff0c;看看有什么现象#xff1f;关闭哪个#xff0c;你打开的文件fd应该就是哪个 结论#xff1a; 从0下标开始#xff0c;寻找最小的没有没使用的数组位置#xff0c;它…1.重定向 文件描述符对应的分配规则是什么? 尝试用这个代码 关闭0,12文件描述符看看有什么现象关闭哪个你打开的文件fd应该就是哪个 结论 从0下标开始寻找最小的没有没使用的数组位置它的下标就是新文件的文件描述符
如果先关闭1再打开log.txt那么根据文件描述符分配规则新打开的文件被分配到了下标1 此时write不管就往1号下标里面写入则此时现象就是本来应该向显示器文件写出但现在是往文件log里面写 这就是重定向的原理但是这样做太挫了 我们可以利用系统调用dup2来复制文件描述符表数组中下标对应的内容 dup2的接口形参设计的不好和我们认为的新旧正好相反但是有了这句 newfd be the copy of oldfdnew是old的拷贝则得出最后只剩一个oldfd 按照重定向结果最后一定只剩fd这个新打开的地址则oldfd 传 fd , newfd 传 1这样也完成了重定向 。 代码 追加重定向 输入重定向 系统调用read 本来read(0,…) 应该从键盘读入现在从文件里面读入
重定向的本质 对进程的指定文件描述符表进行内核级别的对文件描述符表中的地址进行拷贝的问题 这就叫输入输出重定向