目录:
1.对进程是如何和这个进程打开文件进行关联的总结
2.标准输出和标准错误都是往显示器上打印--有何区别
3.缓冲区
---------------------------------------------------------------------------------------------------------------------------
1.对进程是如何和这个进程打开文件进行关联的总结
而现在知道了,文件描述符是从0开始小整数,当我们把文件打开时,操作系统在内存中要创建对应的数据结构来描述目标文件。
于是就有了file结构体。表示一个已经打开的文件对象,而进程指向open系统调用,所以必须让进程和文件关联起来。
每一个进程都有一个指针*files ,指向一张files_struct ,该表最重要的部分就是包含一个指针数组,每一个元素都指向打开的文件指针!!!所以本质上文件描述符就是该数组的下标,所以只要拿着文件描述符,就可以找到对应的文件。。。
--------------------------------------------------------------------------------------------------------------------------------
2.标准输出和标准错误都是往显示器上打印--有何区别
那么 1 2都往显示器上打印,有什么区别呢???
这很好理解,因为你重定向叫做输出重定向,,所谓的输出重定向把原本应该写入到1号文件描述符的内容,直接显示到我指定的文件中,而2号没变,2号照样指向标准错误
可我如果也想把标准错误重定向进log.txt当中呢????
--------------------------------------------------------------------------------------------------------------------------
3.缓冲区
我们在来看另一个问题
我如果把1关了呢 ???
我们再换一批代码看看
导致上面的问题,就是我的最后一次close ---- 我们来分析一下
我们现在再来分析我们的代码
--------------------------------------------------------------------------------------------------------------------------
现在我们也可以解释前面的全部问题了!!!!!!!!!
-------------------------------------------------------------------------------------------------------------------------
有没有一种方法我可以试着解决上面的问题