sunlw78 发表于 2014-08-06 10:46

关于《Unix环境高级编程》一书ffush函数的疑问

#include <stdio.h>
int fflush(FILE * fp);

这是《Unix环境高级编程》上的文字,对这个代码的解释是:
此函数使该流所未写的数据被传送至内核。作为一个特例,如若fp是NULL,则此函数将导致所有输出流被冲洗。

请问:对于上述文字该怎么理解?

sunlw78 发表于 2014-08-06 10:49

所未写的数据被传送至内核,是由内核去完成写操作吗?

MMMIX 发表于 2014-08-06 14:35

回复 2# sunlw78


    fp 指向的打开文件(FILE *)往往存在缓冲(buffer),而这些缓冲是存在于用户空间的,要把它们写出到对应的文件(控制台或磁盘文件),要先把这些缓冲中的内容传递到内核(fflush就是做这个的),然后由内核把它们写入对应的文件。

sunlw78 发表于 2014-08-06 16:04

我查了资料说有内核空间和用户空间,内核空间:操作系统和驱动程序运行在内核空间。应用程序在用户空间。那用户空间是怎么表示的啊?

MMMIX 发表于 2014-08-06 22:15

回复 4# sunlw78


    这个和体系结构、OS都有关系。一般不需要关心它们具体是如何实现的。
页: [1]
查看完整版本: 关于《Unix环境高级编程》一书ffush函数的疑问