首页 > 编程知识 正文

linux线程删除函数,linux系统调用函数

时间:2023-05-06 05:49:50 阅读:260417 作者:1799

翻译自Ubuntu 19版本下的Linux Programmer's Manual

函数名:fflush - 刷新一个流

概要:

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

描述:
  对于输出流,fflush()通过流的底层write(2)函数对所有用户空间缓存的数据进行强制写操作,写到所给定的输出或更新流(如stdout、stderr)。
  对于与可查找文件相关的输入流(例如,磁盘文件,但不是管道或终端),fflush()丢弃从底层文件中已获取的、但应用程序没有使用的任何缓冲数据。
  流的打开状态不受影响。
  如果流参数为NULL,那么fflush()将刷新所有打开的输出流。
  有关非锁定对等项,请参见unlocked_stdio(3)。

返回值:
  成功完成后返回0。否则将返回EOF(-1)并设置errno来指示错误。

ERRORS
  EBADF :stream不是一个打开的流,或者不是为了写打开的。
  函数fflush也可能失败并置 errno 为 write(2) 指定的任何错误。

注意:
  fflush()只刷新C库提供的用户空间缓冲区。为了确保数据物理存储在磁盘上,内核缓冲区也必须被刷新,例如,使用sync(2)或fsync(2)。

补充:

struct _IO_FILE{ int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ /* The following pointers correspond to the C++ streambuf protocol. */ char *_IO_read_ptr; /* Current read pointer */ char *_IO_read_end; /* End of get area. */ char *_IO_read_base; /* Start of putback+get area. */ char *_IO_write_base; /* Start of put area. */ char *_IO_write_ptr; /* Current put pointer. */ char *_IO_write_end; /* End of put area. */ char *_IO_buf_base; /* Start of reserve area. */ char *_IO_buf_end; /* End of reserve area. */ /* The following fields are used to support backing up and undo. */ char *_IO_save_base; /* Pointer to start of non-current get area. */ char *_IO_backup_base; /* Pointer to first valid character of backup area */ char *_IO_save_end; /* Pointer to end of non-current get area. */ struct _IO_marker *_markers; struct _IO_FILE *_chain; int _fileno; int _flags2; __off_t _old_offset; /* This used to be _offset but it's too small. */ /* 1+column number of pbase(); 0 is unknown. */ unsigned short _cur_column; signed char _vtable_offset; char _shortbuf[1]; _IO_lock_t *_lock;#ifdef _IO_USE_OLD_IO_FILE};typedef struct _IO_FILE FILE;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。